我正在转换PHP 5.3库以在PHP 5.2上工作.支持我的主要方法是使用后期静态绑定return new static($options);,如果我将其转换为return new self($options)将得到相同的结果?
new self和之间有什么区别new static?
我如何从同一个类中的另一个方法调用静态方法?
$this->staticMethod();
要么
$this::staticMethod();
我从未见过像这样的代码:
public static function getInstance()
{
    if ( ! isset(self::$_instance)) {
        self::$_instance = new self();
    }
    return self::$_instance;
}
它是一样的new className()吗?
编辑
如果该类是继承的,它指向哪个类?
我对这段代码中显示的情况感到有点困惑......
class DirEnt
{
    public function PopulateDirectory($path)
    {
        /*... code ...*/
        while ($file = readdir($folder))
        {
            is_dir($file) ? $dtype = DType::Folder : $dtype = Dtype::File;                       
            $this->push_back(new SomeClass($file, $dtype));
        }
        /*... code ...*/
    }
    //Element inserter.
    public function push_back($element)
    {
        //Insert the element.
    }
}
为什么我需要使用$this->push_back(new SomeClass($file, $dtype))或   self::push_back(new SomeClass($file, $dtype))调用成员函数push_back?我似乎无法push_back(new SomeClass($file, $dtype))像我期望的那样访问它.我读过什么时候使用自我超过$ this?但它没有回答为什么我需要其中一个(或者如果我一直这样做,也许我搞砸了别的东西).
当成员是非静态成员并且在同一个类中时,为什么需要此规范?不应该从同一个类中的其他成员函数中看到并知道所有成员函数吗?
PS:它可以很好地工作$this->,self::但是当电话中没有这些功能时,这些功能都是未知的push_back.
我有这个代码:
    class a(){
      function b(){
         if(isset($this){
            echo 'instance! ';
            echo get_class($this);
         }else{
            echo 'static';
         }
      }
    }
class C{
  public function test(){
      a::b();
  }
}
$CC=new C;
$CC->test();
这将是回声
实例C.
将某些对象分配给静态属性是非法的吗?
我在下面的代码中收到HTTP 500错误.
require_once('class.linkedlist.php');
class SinglyLinkedlistTester {
    public static $ll = new Linklist();
}
HTTP错误500(内部服务器错误):服务器尝试完成请求时遇到意外情况.
注意:非对象如string,int赋值给静态变量没有问题.举个例子,
public static $ll = 5; //no issue
class.linkedlist.php中也没有代码问题.
private function GetProjects($ProjectStatus) {
    return \App\Models\Project\Project_Model
            ::where('ProjectStatusID', $ProjectStatus)
            ->where('WhoCreatedTheProject', auth()->user()->UserID)->get();
}
public function ClientCancelledProjects() {
    $ProjectStatus = \App\Enumeration\Project\ProjectStatus::Cancelled;         
    $MyProjects = GetProjects($ProjectStatus);
    return view("Project.Client.MyProject", array("Projects" => $MyProjects));
}
调用未定义的函数App\Http\Controllers\Project\GetProjects()
有人知道为什么会这样吗?我试图重用一些代码行,因为它们在Controller中被多次写入.
我了解到静态比self更好,因为 self 进行后期静态绑定。
但我想知道哪个最适合引用const变量。
class Black
{
    const color = 'black';
    public function byThis()
    {
        return $this::color;
    }
    public function bySelf()
    {
        return self::color;
    }
    public function byStatic()
    {
        return static::color;
    }
}
我检查了所有三个吸气剂都运行良好。哪个是最好的选择?(我使用 PHP 7.0)