Я получаю следующее сообщение об ошибке:
PHP Fatal error: Access level to Database::$db must be public (as in class phpLive) in C:\Users\ryannaddy\Documents\NetBeansProjects\phpLive\plugins\Database\Database.plugin.php on line 92
Fatal error: Access level to Database::$db must be public (as in class phpLive) in C:\Users\ryannaddy\Documents\NetBeansProjects\phpLive\plugins\Database\Database.plugin.php on line 92
Часть класса 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
), я получаю вышеуказанную ошибку. Что я могу сделать, чтобы сделать эту работу?
Что находится в C: \ Users \ ryannaddy \ Documents \ NetBeansProjects \ phpLive \ plugins \ Database \ Database.plugin.php в строке 92? – Gordon
@Gordon Это на этой строке: '}' –