我有一个数据字符串将作为事件日志写入文件,所以我需要从页面开始加载到加载完成时的这个字符串,此时内容该字符串将写入日志文件。
我可以在某些类中添加到此字符串,但不能在其他类中添加,因此让我感到困惑。如果它不起作用,我会得到一个允许的内存大小... ...已经筋疲力尽了#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.php
和Settings.class.php
的设置方法与同一个构造函数的设置方式相同,但其中一个会正常工作而另一个会不会。<\ n / p>
正如您所看到的,我创建了一个静态字符串,整个应用程序中的所有内容都可以添加,然后此字符串将被写入文件一次。我是以错误的方式解决这个问题吗?