小编Nic*_*ars的帖子

PHP应该首先检查所有函数的参数类型吗?

我已经构建了一系列字符串函数,它们可以执行各种操作,我注意到我实际上没有任何内部函数检查,以确保变量是一个字符串,然后才能完成它.

因此,在开发过程中的几次,我偶然传递了一些字符串以外的其他内容,从而导致错误.

现在,我想知道这是否是我应该一直这样做的事情.首先检查以确保已发送正确类型的数据/检查可能首先出现问题的事情,以某种方式记录它们,然后如果一切正常,请使用它做一些事情.

这是我应该坚持的吗?

php function type-hinting

8
推荐指数
1
解决办法
469
查看次数

GPG - 以非交互方式更改密码

大多数其他 GPG 命令允许您使用 --batch 模式,但在尝试编辑密码短语时似乎并非如此。

你必须跑 gpg --edit-key user

这会打开一个交互式 GPG 提示。

这在我的情况下不起作用,因为我需要能够在没有命令行交互的情况下更改密码。

我发现的最接近的东西是

gpg --batch --passphrase-fd 0 --status-fd 2 --command-fd 0 --edit-key

但这只是在我输入现有密码后给我一个无效命令。

任何建议都非常感谢。

encryption gnupg keychain

6
推荐指数
1
解决办法
334
查看次数

如何在foreach循环中设置变量以便在PHP中进行外部访问?

如果我有一个阵列

$places = array('year' => '2012', 'place' => 'school');
Run Code Online (Sandbox Code Playgroud)

有没有办法在PHP中这样做

foreach ($places as $key => $value) 
{
    $key = $value
}
Run Code Online (Sandbox Code Playgroud)

但是,根据键的名称设置变量.

例如,变量可以这样提供

echo $year;
2012
echo $place;
school
Run Code Online (Sandbox Code Playgroud)

php arrays variables

4
推荐指数
1
解决办法
5132
查看次数

了解 Gemfile.lock 中的波形符运算符

我目前有以下依赖项

i18n (~> 0.6, >= 0.6.4)
Run Code Online (Sandbox Code Playgroud)

我一直在阅读Ruby Gems - 声明依赖项指南

我发现“~> 0.6”部分表示 0.6 到 1.0 之间的任何值 - 如果这是错误的,请纠正我。

但我仍然很困惑,这对于第二个逗号分隔值实际上意味着什么?

一位同事认为这意味着

>= 0.6.4, <= 0.7
Run Code Online (Sandbox Code Playgroud)

但我不太确定。

ruby rubygems gemfile

4
推荐指数
1
解决办法
3127
查看次数

检查数组中的任何值是否彼此相等

我正在验证一个表单,根据用户选择的内容提交最多3个不同的ID.

我把它们放到一个数组中:

$submitted_genres = array($_POST['genre1'], $_POST['genre2'], $_POST['genre3']);
Run Code Online (Sandbox Code Playgroud)

我如何检查以确保没有任何数组值彼此相等?

php

3
推荐指数
1
解决办法
847
查看次数

如何从另一个类方法 PHP 捕获异常

我在 PHP 中捕获异常时遇到问题

这是我的代码。

try {
require $this->get_file_name($action);
}

catch (Exception $e) {
//do something//
}
Run Code Online (Sandbox Code Playgroud)

和被调用的方法

private function get_file_name($action) {

    $file = '../private/actions/actions_'.$this->group.'.php';

    if (file_exists($file) === false) {
    throw new Exception('The file for this '.$action.' was not found.');
    }

    else {
    return $file;
    }
}
Run Code Online (Sandbox Code Playgroud)

导致:

Fatal error: Uncaught exception 'Exception' with message $action was not found.'
Exception: The file for this $action was not found.
Run Code Online (Sandbox Code Playgroud)

但是,如果我在函数内部放置一个 try-catch 块并调用该函数,则可以毫无问题地捕获异常。

我究竟做错了什么?

php oop exception class

3
推荐指数
1
解决办法
3863
查看次数

在函数PHP中实例化类是一种不好的做法

我正在重构大量代码以使其更具可测试性,并且我有一堆依赖于实例化数据库对象的有用函数。

这样的事情:

function id_from_name($table, $name)
{
    $db = get_database();
    //code that returns an id
}

function username_from_user_id($id)
{
    $db = get_database();
    //code that returns a username
}
Run Code Online (Sandbox Code Playgroud)

还有更多类似id_exists,id_active等的信息。

现在,我认为这不是正确的选择,因为对象可能应该作为参数传递?但这意味着每次我要使用一个函数时,都要在每个函数中创建并发送一个新对象。

所以,我的问题确实是:我是否应该将这些函数移入可以访问数据库对象的自己的类/库中?我上面显示的示例通常是一种不好的处理方式吗?

php class function

3
推荐指数
1
解决办法
1467
查看次数

PHP检查字符串中的所有字符是否为中文

我目前正在使用这种方法来检测字符串中是否存在任何中文字符

if (preg_match("/\p{Han}+/u", $str))
{
  //made in china
}
Run Code Online (Sandbox Code Playgroud)

工作正常,但我还需要检查完整字符串是否为中文,而不仅仅是检查是否有中文字符.我似乎无法弄清楚如何做到这一点,它可以用preg匹配完成吗?

php string

2
推荐指数
1
解决办法
1827
查看次数

奇怪的PDO结果返回每个行值的键

尝试在一个非常简单的应用程序中获取一些数据库结果.

$pdo = new PDO("mysql:host=localhost;dbname=soundinsider", "root", "");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM users";
$query = $pdo->query($sql);

echo '<pre>';
print_r($query->fetchAll());
Run Code Online (Sandbox Code Playgroud)

这就是输出

Array
(
[0] => Array
    (
        [user_id] => 1
        [0] => 1
        [username] => simon
        [1] => simon
        [email] => madeup
        [2] => madeup

    )

[1] => Array
    (
        [user_id] => 2
        [0] => 2
        [username] => bobwin
        [1] => bobwin
        [email] => fake@email.com
        [2] => fake@email.com

    )

)
Run Code Online (Sandbox Code Playgroud)

所以似乎为每个结果创建了一个额外的密钥.当我在一两个月前编码时,情况并非如此.这里有什么问题或者这是现在的PDO行为吗?

php mysql pdo

1
推荐指数
1
解决办法
563
查看次数

基于其值移除数组键的简单方法

$fields = array('timbo', '22', 'norway');
Run Code Online (Sandbox Code Playgroud)

我怎么能根据它的价值单独取消挪威的数组键?

php arrays

0
推荐指数
1
解决办法
94
查看次数

如何从一组可能的单词中检索字符串中的单词

我希望我能正确地说出这个问题!我想检索一个国家的名称,如果它存在于一个字符串中.

$bio = 'A biography about someone from France';
$countries = ['Germany', 'Spain', 'France'];
Run Code Online (Sandbox Code Playgroud)

如何使用countries数组检查字符串中是否存在国家/地区?然后,如果找到匹配,返回它?在这个例子中,我将留下"法国"这个词.

php string

0
推荐指数
1
解决办法
50
查看次数