我在php中练习设计模式(单例和依赖注入),问题是当我在run(){}中设置另一个索引文件来设置和测试路由时,如果在新的索引文件中从Applaction类创建另一个示例:
- 如果我使用Applaction::init()作为函数将返回NULL ;
- 但是如果我使用Applaction::$init;..威尔工作得很好!!!
<?php
namespace System;
class Applaction{
public static $init = null; //instance
public Array $container = [];
private function __construct(File $file)
{
static::$init = $this;
$this->share('files', $file);
$this->setClasses();
$this->loadFunctions();
}
//create class instance
public static function init($file = null){
if(is_null(static::$init)){
static::$init = new static($file);
return static::$init;
}
}
public function run(){
$this->session->start();
//use App/index.php File for test
$this->files->getFiles('App/index.php');
$this->request->setUrl();
list($controller, $method, $args) = $this->route->getProperRoute();
$this->load->controller($controller);
}
//可以正常工作
<?php
//App\index.php
use System\Applaction;
$app = Applaction::$init; // $init ?!
$app->route->add('/', 'Home');
此处返回NULL
<?php
//App\index.php
use System\Applaction;
$app = Applaction::init(); // method init()
$app->route->add('/', 'Home');
1条答案
按热度按时间pjngdqdw1#
谢谢大家...
更新: