【问题标题】:how can blank functions help us in PHP空白函数如何在 PHP 中帮助我们
【发布时间】:2011-01-11 12:54:12
【问题描述】:

你好
我正在学习php,我在许多其他小项目中看到了许多空Function,我不知道它有什么帮助。

例子:

public function first(){
// do nothing
          }
public function second(){
        // do nothing
          }
public function myfuntion(){
        // Codes
          }

另一个例子:
class user_bo{

protected $attributes = Array(); 

  public function __get($key){  

      return array_key_exists($key, $this->attributes) ? $this->attributes[$key] : null;   
  } 

  public function __set($key, $value){  

      $this->attributes[$key] = $value;   
  } 

  /** Constructor **/
  public function __construct(){ }  

} ?>

__construct() 在这种情况下如何帮助我们,因为它看起来好像什么也没做?

【问题讨论】:

  • 你能举个真实的例子吗?
  • 你能指出你看过的资源吗?这个问题有点断章取义。
  • 通常用于_examples_$
  • 可能是这些函数体的实现打算在扩展(继承)类中定义
  • 也许它是一个类中的函数,它被另一个类覆盖,你已经看到了......?从来没有见过很多空函数被使用

标签: php function methods


【解决方案1】:

当你说空函数时,不仅仅是你在谈论 __construct 和魔法方法

它们帮助我们确定操作授权的方式,例如

public class MyClass
{
    private function __construct(){}
}

这允许我们阻止 new MyClass 调用,但可以通过调用静态方法并执行 new self() 来覆盖

还有其他原因,比如不允许继承,比如:

#Class 1
public function Base
{
    public function start()
    {
        echo "hello";
    }
}

#Class 2
public function Layer extends Base
{
}

#Class 3
public function Layer extends Base
{
    private function start(){}
}

查看上面的类 2 包含一个名为 start 的可调用方法,但它是来自父级的方法,在类 3 中同样发生,但它被本地方法覆盖,并且作为它的私有方法,它不允许调用方法。

深入了解 OOP,我们有接口告诉类它必须包含一组指定的方法,所以如果一个类实现了这样的接口,则需要定义所有需要的方法,否则会抛出错误,所以程序员可能会创建空方法来保持类结构。


根据您的新示例,除了扩展另一个类之外,没有特定原因导致空的公共__constructor

这是一个例子:

class Main
{
    public function __construct()
    {
        echo "Main";
    }
}

class FirstSub extends Main
{
}

class SecondSub extends Main
{
    public function __construct()
    {
        echo "SecondSub";
    }
}

class ThirdSub extends Main
{
    public function __construct()
    {
        echo "ThirdSub <br />";
        parent::__construct();
    }
}

从结构中可以看出,我们有一个名为Main 的主类和三个子类。

如果我们初始化主类会得到构造函数打印Main,但结果会因子类而异,因为构造函数会覆盖父类。

所以初始化以下将导致:

  • 主要:Main
  • FirstSub: ``- 什么都没有
  • 第二副:SecondSub
  • 第三分队:ThirdSub&lt;br /&gt;Main

尽可能使用空白结构对父类产生影响。

【讨论】:

    【解决方案2】:

    空白函数可能还没有实现,可能用作将来增强的占位符。

    【讨论】:

    • 空间并不有限,您只需创建一个单独的版本。
    • 如果你添加了几个你计划实现的方法,发布,然后决定不实现它们,你有一个包含很多永远不会使用的废话的发布,正如我所说的你只会创建单独发布
    【解决方案3】:

    我不确定我是否明白了你试图解释的内容,但有时它可以帮助很多人编写程序的大致轮廓,并且只有在他们完成并编写每个函数之后才能成功不要切断他们的思路。

    为了记住他们需要对该函数进行编码,他们创建了它但将其留空。当然,函数的名称可能比“first”、“second”或“myfunction”更具描述性。

    【讨论】:

      【解决方案4】:

      Ahn,我猜您正在阅读“PHP 中的函数”。在这里,作者解释了如何定义自己的和自定义的函数。

      <?php
      function foobar() {
          echo "Foobar";
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多