Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空白函数如何在PHP中帮助我们_Php_Function_Methods - Fatal编程技术网

空白函数如何在PHP中帮助我们

空白函数如何在PHP中帮助我们,php,function,methods,Php,Function,Methods,你好 我正在学习php,我在许多其他小项目中看到了许多空函数,我不知道它有什么帮助 例如: public function first(){ // do nothing } public function second(){ // do nothing } public function myfuntion(){ // Codes } 另一个例子: 类用户_bo{ protected $attribu

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

例如:

public function first(){
// do nothing
          }
public function second(){
        // do nothing
          }
public function myfuntion(){
        // Codes
          }
另一个例子:

类用户_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()怎么能帮助我们呢,因为它看起来好像什么都没有做?

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

我不确定我是否理解了您试图解释的内容,但有时它可以帮助很多人编写程序的一般大纲,只有在他们完成并编写了每个函数之后,才不会切断他们的思路


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

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

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

当你说空函数时,不仅仅是谈论构造和神奇的方法

例如,它们帮助我们确定行动授权的方式

public class MyClass
{
    private function __construct(){}
}
这允许我们阻止
newmyclass
调用,但可以通过调用静态方法并执行
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,我们有一些接口告诉类它必须包含一组指定的方法,因此如果类实现了这样的接口,则需要定义所需的所有方法,否则它将抛出错误,因此程序员可能会创建空方法来保持类结构


根据您的新示例,除了扩展另一个类之外,没有任何特定的原因导致公共构造函数为空

下面是一个例子:

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();
    }
}
主类
{
公共函数构造()
{
回声“主”;
}
}
类FirstSub扩展了Main
{
}
类SecondSub扩展了Main
{
公共函数构造()
{
呼应“第二次分包”;
}
}
类ThirdSub扩展了Main
{
公共函数构造()
{
回音“第三个字母
”; 父项::_构造(); } }
从结构中可以看出,我们有一个名为
Main
的主类和三个子类

如果我们初始化主类,我们将得到构造函数print
main
,但是结果会随着子类的不同而变化,因为构造函数会覆盖父类

因此,初始化以下内容将导致:

  • Main:
    Main
  • FirstSub:“`-什么都没有
  • SecondSub:
    SecondSub
  • 第三个子集:
    ThirdSub
    Main

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

您能给出一个真实的例子吗?您能指出您看到的资源吗?这个问题有点脱离上下文。它通常用于_示例$可能是这些函数体的实现是在扩展(继承)类中定义的,可能是一个类中的函数被嵌入,以便从扩展它的另一个类中被覆盖,你已经看到了。。。?从未见过有很多空函数被使用空间并不是很有限,你只需要创建一个单独的版本。如果你添加了几个你计划实现的方法,发布,然后决定不实现它们,你的版本中有很多垃圾,永远不会被使用,正如我说的,你只需要创建一个单独的版本