小编Lis*_*sky的帖子

如何检测是否设置了$ _POST?

我想知道如何检测是否设置了$ _POST.

现在我发现它像这样:

if(isset($_POST['value']))
Run Code Online (Sandbox Code Playgroud)

但我不是在看是否已经设定了价值.基本上,任何POST都可以.

if(isset($_POST))
Run Code Online (Sandbox Code Playgroud)

我不确定PHP如何处理这个问题.Perhabs isset($ _ POST)总是返回true,因为它是PHP全局?

基本上,我该怎么做?

php post

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

试图理解为什么Laravel的许多静态方法不被认为是不好的做法

我很困惑.

我已经让Reddit上的一些开发人员查看了我的代码.看起来像这样.

Template::load('register', array('error_message' => Language::translate('username_in_use'));
Run Code Online (Sandbox Code Playgroud)

所以它加载register.php,用翻译替换{error_message}.(抱歉,此用户名正在使用中.请选择其他用户名.)

他们说使用太多静态调用是一种不好的做法.然而他们建议使用Laravel框架,它完全摆脱$ this并使用静态调用.

有人可以解释一下,如果这是不好的做法,Laravel是一个优雅的框架吗?

php laravel

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

是依赖注入,这是一个不好的做法?

我有一个小框架,我这样编码.我不确定它是否被称为依赖注入.我不知道它是否像设计模式.我也不知道并怀疑$this作为参数传递是否是一种不好的做法.

看看这个; (不是一个有效的例子,只是将这些代码写入浏览器进行解释.)

/* This is engine model */
require_once('Database.class.php');
require_once('Image.class.php');
require_once('Misc.class.php');
require_once('BBCode.class.php');

class FrameWork_Engine_Model
{
    public $database, $config, $misc, $bbcode, $controller, $image;

    function __construct($config)
    {
            $this->database = new Database($configParams);
            $this->image = new Image($this);
            $this->misc = new Misc($this);
            $this->bbcode = new BBCode($this);
            $this->controller = new Controller($this); //here I call Register controller depending on routing, in this case, register controller.
    }
 ...
 }
Run Code Online (Sandbox Code Playgroud)
 /* This is register controller */
 class Register extends Base_Controller
 {
       /*I can access anything over …
Run Code Online (Sandbox Code Playgroud)

php oop dependency-injection

9
推荐指数
2
解决办法
1682
查看次数

无法将类Closure的对象转换为string:filename.

function convert($currencyType)
{
    $that = $this;
    return $result = function () use ($that) 
    {
        if (!in_array($currencyType, $this->ratio))
                return false;

        return ($this->ratio[$currencyType] * $this->money); //a float number
    };
}

$currency = new Currency();
echo $currency->convert('EURO');
Run Code Online (Sandbox Code Playgroud)

怎么了?

我收到错误消息:

Catchable fatal error: Object of class Closure could not be converted to string
Run Code Online (Sandbox Code Playgroud)

php

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

用PHP测试.如何确保正确运行?

首先,我不知道它是否被称为单元测试.如果它有不同的名称,请随时纠正我.

我正在开发像这样的Web应用程序.

假设我正在开发一个表单来将值保存到数据库中.我开发HTML和PHP.我有时间在浏览器中按F5并检查HTML/jQuery是否没有错误,PHP不会出现错误的分号等错误.

当它完成并且一切都准备好进行测试时,我开始测试我的代码的一小部分.喜欢;

  1. -Do $ _POST数组是否正确地从表单文件中获取值?(我用print_r测试)
  2. - "$ email"变量是否正确清理为有效的电子邮件?(我用不同的能力测试它,例如:aaa @ bbb,aa @ bb.com,@@ b.net等)
  3. - 提交的表单是否通过了所有控件,并成功插入到数据库中?(我查看我的MySQL表.)
  4. - 表单是否正确显示错误/成功消息?
  5. -...等等.

如果它使用正确的值,并且失败并返回错误的值; 我相信表单按预期工作,没有错误,所以我转向其他事情.

而不是这样做,我想确保事情完美无缺,否则在没有垃圾邮件F5浏览器的情况下通知我这个问题.

像这样;

<?php
/* Unit Testing Start --
-ensure: isset($_POST['submit']) returns TRUE;
-ensure: isset($email) returns TRUE;
-ensure: isValidEmail($email) returns TRUE;
-ensure: connectDatabase() returns TRUE;
-ensure: getMysqlAffectedRows() returns 1;
-ensure: hasErrors() returns false;
*/

?>
Run Code Online (Sandbox Code Playgroud)

我的表单代码使用我上面发布的功能.

当它运行时,它应该向我显示如下消息:(最好还记录它)

Test complete. Tested (6) possibilities, (4) succeeded, (2) failed. 
Failed 1: isValidEmail() returned FALSE, expected: TRUE. 
Failed 2: getMysqlAffectedRows returned NULL/0, expected …
Run Code Online (Sandbox Code Playgroud)

php testing automated-tests

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

使用特征而不是类,为什么?

类是这样做的吗?

Class Main 
{
    $this->a = new A();
    $this->b = new B();
    $this->c = new C();

    $this->b->doTranslate($this->a->saySomething());
}
Run Code Online (Sandbox Code Playgroud)

这就是特质的作用,不是吗?

Class Main {
    use A;
    use B;
    use C;

    $this->doTranslate($this->saySomething());
}
Run Code Online (Sandbox Code Playgroud)

我对特征根本没有太多了解,但通过查看新的 PHP 5.4 特征示例,它们似乎只在单一情况下有帮助。A class only be extended once to use $this together, but we can use multiple traits.

问题 1:这是使用特征相对于基本类的唯一优势吗?

问题2:如果trait A, B, and C都有一个名为 的函数example(),当我尝试$this->example();PHP 将如何确定将使用哪个特征?将会发生什么?

此外,不要写一堵文字墙;只需向我提供一个简短的代码示例和一个简短的简介,我可以查看并理解。我不熟悉特质,也不知道它们到底是什么。

php traits

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