我收到以下错误:
PHP 致命错误:第 92 行 C:\Users\ryannaddy\Documents\NetBeansProjects\phpLive\plugins\Database\Database.plugin.php 中 Database::$db 的访问级别必须是公共的(如 phpLive 类)
致命错误:第 92 行 C:\Users\ryannaddy\Documents\NetBeansProjects\phpLive\plugins\Database\Database.plugin.php 中 Database::$db 的访问级别必须是公共的(如类 phpLive)
类的一部分phpLive.php
。这就是我的 Database::$db 属性的创建方式。如您所见,它是一个动态创建的属性。然后我像在我的下一个代码块中一样使用__get()
来访问该属性。
<?php
class phpLive{
public function loadPlugin($class, $info){
$this->functionName = __FUNCTION__;
$info = (object)$info;
$file = $this->location . "/plugins/" . $info->root . "/" . $info->fileName;
if(is_file($file)){
require_once $file;
$instance = (string)$info->instanceName;
$info = (isset($info->information)) ? $info->information : "";
$reflection = new ReflectionClass($class);
$this->$instance = $reflection->newInstanceArgs(array($info));
$this->extension[$instance] = $this->$instance;
return $this->$instance;
}
return false;
}
public function __get($name){
switch($name){
default:
if(array_key_exists($name, $this->extension)){
$ret = $this->extension[$name];
}else{
$ret = false;
}
break;
}
return $ret;
}
}
注意:$class
并且$info
是从如下所示的配置文件中加载的:
$plugins = array(
"Database" => array(
"root" => "Database",
"fileName" => "Database.plugin.php",
"instanceName" => "db",
"sessionRef" => "db",
"information" => array(
"dbtype" => "mysql",
"hostname" => "localhost",
"database" => "test",
"username" => "root",
"password" => "xxx",
)
),
);
这就是我使用房产的方式db
<?php
require_once '../../phpLive.php';
$live->db->select("select * from users where fname in(?,?)", array("Billy", "Bob"))->each(function($col, $name){
echo "here";
});
因此,该方法select
位于Database.plugin.php
扩展的类/文件中phpLive
class Database extends phpLive{
public function select(){
$info = $this->queryinfo(func_get_args());
$this->query($info->query, $info->args);
return $this;
}
}
选择工作正常,但只要我添加每个方法(在phpLive
类中找到),我就会收到上述错误。我能做些什么来完成这项工作?