-1

我收到以下错误:

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类中找到),我就会收到上述错误。我能做些什么来完成这项工作?

4

1 回答 1

1

文件 Database.‌​plugin.php 或其子类中必须有一个名为 $db 的私有变量。

于 2013-07-16T15:01:10.597 回答