php:何时在include/require_之后使用范围解析符号(::)?

php:何时在include/require_之后使用范围解析符号(::)?,php,Php,全部, 我想了解 我正在查看以下代码示例: index.php <?php define("PAGE_DIR", dirname(__FILE__) . "/pages"); require_once "FrontController.php"; FrontController::createInstance()->dispatch(); 这是因为FrontController是一个带有createInstance()静态方法的类。这是因为FrontController是一个带有c

全部,

我想了解

我正在查看以下代码示例:

index.php

<?php
define("PAGE_DIR", dirname(__FILE__) . "/pages");
require_once "FrontController.php";
FrontController::createInstance()->dispatch();

这是因为
FrontController
是一个带有
createInstance()
静态方法的类。

这是因为
FrontController
是一个带有
createInstance()
静态方法的类。

FrontController
似乎是一个静态方法


静态调用
createInstance()
方法(因此调用
)并创建对象实例。然后,在生成的对象上执行
dispatch()
方法(因此是
->
)。

FrontController
似乎是一个


静态调用
createInstance()
方法(因此调用
)并创建对象实例。然后,对结果对象执行
dispatch()
方法(因此为
->
)。

当调用不需要类实例的类方法(->静态调用)时,可以通过以下方式调用它::

当调用不需要类实例的类方法(->静态调用)时,你可以这样称呼它::

这家伙试图采用单例模式,但他的代码中有错误:

这:

应该变成这样:

class FrontController {
  var $instance = NULL;
  public static function createInstance() {
    if (!defined("PAGE_DIR")) {
      exit("Critical error: Cannot proceed without PAGE_DIR.");
    }
    if($this->instance == NULL) {
      $this->instance = new self();
    }

    return $this->instance;
  }

这只是一种方法,但也有不同但相似的方法。我们的想法是,这个特定类只有一个实例,没有重复。

这个家伙试图采用单例模式,但他的代码中有错误:

这:

应该变成这样:

class FrontController {
  var $instance = NULL;
  public static function createInstance() {
    if (!defined("PAGE_DIR")) {
      exit("Critical error: Cannot proceed without PAGE_DIR.");
    }
    if($this->instance == NULL) {
      $this->instance = new self();
    }

    return $this->instance;
  }

这只是一种方法,但也有不同但相似的方法。想法是您只有一个这个特定类的实例,并且没有重复。

它与
require
/
include
完全无关。这只是课程如何运作。是的,我读过,但我仍然不清楚。感谢您发布该链接,我本应将其包含在内。该链接的可能副本与
要求
/
包含
无关。这只是课程如何运作。是的,我读过,但我仍然不清楚。感谢您发布链接,我应该已经包含了它。如果方法不是静态的,那么我们就不需要运算符了。如果方法不是静态的,那么您必须实例化类并使用
->
。如果方法不是静态的,我们不需要运算符?如果该方法不是静态的,那么您必须实例化该类并使用
->
。但是,您必须将该方法声明为静态的,以避免出现严格的E_通知(至少从PHP5.3开始,不知道早期版本),但是,您必须将该方法声明为静态的,以避免出现严格的E_通知(至少从PHP5.3开始,不知道早期版本)