添加到字符串的多个类方法

时间:2016-12-16 16:01:48

标签: php

我有一个数据字符串将作为事件日志写入文件,所以我需要从页面开始加载到加载完成时的这个字符串,此时内容该字符串将写入日志文件。

我可以在某些类中添加到此字符串,但不能在其他类中添加,因此让我感到困惑。如果它不起作用,我会得到一个允许的内存大小... ...已经筋疲力尽了#39;错误。

FILE:index.php

spl_autoload_register(function($class) {

    if (file_exists(dirname(__FILE__).'/classes/'.$class.'.class.php')) {

        include dirname(__FILE__).'/classes/'.$class.'.class.php';

    }

});

$App = new Core();

$App->Visitor->getIP(); // This will exhaust memory...why?
$App->Settings->hello(); // Works
$App->writeLog('in my index file...'); // Works

$App->viewLog();

FILE:/classes/Core.class.php

class Core {

    public static $logContent;

    public function __construct() {

        $this->initialize();

    }

    private function initialize() {
        self::$logContent = 'Lets start...';
        $this->Visitor = new Visitor($this);
        $this->Settings = new Settings($this);
        $this->Cache = new Cache($this);    
    }

    public function writeLog($action) {
      self::$logContent .= $action;
    }

    public function viewLog() {
      echo self::$logContent;
    }

}

FILE:/classes/Visitor.class.php

class Visitor {

    private $App;

    public function __construct($App) {

        $this->App = $App;

    }

    public function getIP() {

        $this->App->writeLog('getting ip...'); // Exhausts memory

        if (isset($_SERVER['REMOTE_ADDR'])) {

            return $_SERVER['REMOTE_ADDR']; 

        } else {    

            return false;   
        }

    }

}

FILE:/classes/Settings.class.php

class Settings {

    private $App;

    public function __construct($App) {

        $this->App = $App;

    }


    public function hello() {
        $this->App->writeLog('getting ip...');
        return 'hello';

    }

}

我无法弄清楚Visitor.class.phpSettings.class.php的设置方法与同一个构造函数的设置方式相同,但其中一个会正常工作而另一个会不会。<\ n / p>

正如您所看到的,我创建了一个静态字符串,整个应用程序中的所有内容都可以添加,然后此字符串将被写入文件一次。我是以错误的方式解决这个问题吗?

0 个答案:

没有答案