相关疑难解决方法(0)

什么是依赖注入?

已经发布了几个关于依赖注入的具体问题的问题,例如何时使用它以及它有哪些框架.然而,

什么是依赖注入以及何时/为什么应该或不应该使用它?

language-agnostic design-patterns dependency-injection terminology

2984
推荐指数
25
解决办法
80万
查看次数

单身人士有什么不好的?

单例模式是一个缴足成员四人帮模式书,但最近似乎而是由开发者世界孤立.我仍然使用相当多的单例,特别是对于工厂类,虽然你必须对多线程问题(实际上是任何类)有点小心,但我不明白为什么它们如此可怕.

Stack Overflow特别假设每个人都同意Singletons是邪恶的.为什么?

请用" 事实,参考或特定专业知识 " 支持您的答案

singleton design-patterns

1931
推荐指数
30
解决办法
48万
查看次数

如何按值排序多维数组?

如何通过"order"键的值对此数组进行排序?尽管这些值目前是连续的,但它们并不总是如此.

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)
Run Code Online (Sandbox Code Playgroud)

php arrays sorting multidimensional-array

1058
推荐指数
11
解决办法
76万
查看次数

PHP全局函数

global关键字的效用是什么?

是否有任何理由更喜欢一种方法?

  • 安全?
  • 性能?
  • 还要别的吗?

方法1:

function exempleConcat($str1, $str2)
{
  return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)

方法2:

function exempleConcat()
{
  global $str1, $str2;
  return $str1.$str2;
}
Run Code Online (Sandbox Code Playgroud)

什么时候使用有意义global

对我来说,它似乎很危险 ......但它可能只是缺乏知识.我感兴趣的是记录(例如代码示例,文档链接......)技术原因.

提前致谢!


赏金

这是关于这个主题的一个很好的一般性问题,我(@Gordon)正在提供奖励以获得更多答案.无论您的答案是否与我的答案一致或给出不同的观点都无关紧要.由于该global主题时不时出现,我们可以使用一个很好的"规范"答案来链接.

php language-design

98
推荐指数
7
解决办法
2万
查看次数

PHP函数使用外部变量

function parts($part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo($tructure . $part . '.php'); 
}
Run Code Online (Sandbox Code Playgroud)

此函数使用$site_url在此页面顶部定义的变量,但此变量未传递到函数中.

我们如何让它在函数中返回?

php variables function

46
推荐指数
3
解决办法
9万
查看次数

在PHP中停止使用`global`

我有一个config.php包含在每个页面.在配置中我创建一个类似于下列的数组:

$config = array();
$config['site_name']      = 'Site Name';
$config['base_path']      = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';
//etc...
Run Code Online (Sandbox Code Playgroud)

然后我有function.php,几乎每个页面都包括,我必须使用它global $config来访问它 - 就是我想要摆脱的!

如何$config在不使用代码的情况下访问代码的其他部分global

任何人都可以解释一下,为什么我不应该global在我的例子中使用?有人说这是一个糟糕的语气,其他人说它不安全?

编辑1:

我在何处以及如何使用它的示例:

function conversion($Exec, $Param = array(), $Log = '') {
        global $config;
        $cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
                foreach ($Param as $s)
                {
                    $cmd .= ' ' . $s;
                }
 }
Run Code Online (Sandbox Code Playgroud)

编辑2:

按照Vilx的建议,将所有这些放在类中会很酷但在这种情况下,我如何将它与从提取配置 …

php

44
推荐指数
3
解决办法
2万
查看次数

检查PDO准备语句时出错

我正在尝试使用PDO预处理语句为MySQL数据库上的查询创建正确的错误处理.我希望程序在检测到预准备语句进程中的错误时退出.利用PDO准备好的声明过程中的每一步都False失败的事实,我把这个令人反感的黑客扔到了一起:

 global $allFields;
 global $db;
 global $app;
 //dynamically append all relevant fields to query using $allFields global
 $selectQuery = 'SELECT ' . implode($allFields, ', ') .
     ' FROM People WHERE ' . $fieldName . ' = :value';
 //prepared statement -- returns boolean false if failure running query; run success check
 $success = $selectQueryResult = $db->prepare($selectQuery);
     checkSuccess($success);
 $success = $selectQueryResult->bindParam(':value', $fieldValue, PDO::PARAM_STR);
     checkSuccess($success);
 $success = $selectQueryResult->execute();
     checkSuccess($success);
Run Code Online (Sandbox Code Playgroud)

checkSuccess()执行以下操作:

function checkSuccess($success) {
    if ($success == false) {
        //TODO: …
Run Code Online (Sandbox Code Playgroud)

php mysql

16
推荐指数
2
解决办法
2万
查看次数

是否可以在PHP函数中定义局部常量?

能够在PHP中的函数范围内定义局部常量可能会很好

这样,任何阅读该函数的人都会知道该定义在函数中是最终的,并且不会影响任何外部代码

像这样的东西(无效的语法):

public function laughManiacally($count){
  const LAUGH = 'HA';

  for($i=0;$i<$count;$i++){
    echo LAUGH;
  }
};  
Run Code Online (Sandbox Code Playgroud)

或者可能(再次无效):

...
final $laugh = 'HA';
...
Run Code Online (Sandbox Code Playgroud)

反正有没有这样做?如果没有,为什么不呢?

UPDATE

JavaScript允许块级常量声明的方式类似于我正在搜索的功能

function laughManiacally(count) {
  const LAUGH = 'Ha';

  for (let i = 0; i < count; i++) {
    console.log(LAUGH);
  }
}
Run Code Online (Sandbox Code Playgroud)

php

15
推荐指数
2
解决办法
7629
查看次数

在所有WordPress页面上使用变量的最佳方法

我正在构建一个自定义主题,其中包含许多我希望在整个过程中使用的变量.

例:

$tv     = $options['tv'];
$movies = $options['movies'];
$print  = $options['print'];
//....and about 50 more.
Run Code Online (Sandbox Code Playgroud)

为此,我只是将它们全部放在一个名为vars.php的文件中,然后在主题的header.php中包含它...

require_once('vars.php');
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效,但它并不是最好的方式.我在很多场合读过使用全局变量(大概是在function.php中)并不是一个好主意,但这是真的吗?

但是如果在functions.php中使用全局变量(甚至很多都是)这是正确的,那么这是正确的方法吗?:

global $tv;
$tv     = $options['tv'];

global $movies
$movies = $options['movies'];

global $print
$print  = $options['print'];
Run Code Online (Sandbox Code Playgroud)

php variables wordpress global-variables

15
推荐指数
3
解决办法
2257
查看次数

获取当前请求期间发生的所有PHP错误/警告/ ....

将指令设置display_errorstrue(error_reporting设置为E_ALL)时会打印当前请求期间发生的所有错误.

由于我在我的PHP代码中发送标题,我得到了更多错误(在发送内容后发送标题是不可能的).

现在我想将错误消息添加到我的页面末尾.在那里,我想展示所有发生的错误(直到那时).不幸的是,error_get_last只返回发生的最后一个错误.

我首先想到set_error_handler可能会解决问题,但我担心我的错误记录不再起作用了:

重要的是要记住,对于error_types指定的错误类型,标准PHP错误处理程序是完全被绕过的,除非回调函数返回FALSE.

除此之外:

下面的错误类型不能与用户定义的函数来处理:E_ERROR,E_PARSE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,E_COMPILE_WARNING,最E_STRICT的其中的set_error_han dler()被调用的文件中提出.

但也许他们也没有 error_get_last()

那么有没有办法在输出生成的内容后打印所有错误?

php error-handling

12
推荐指数
2
解决办法
1162
查看次数