Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP重载静态属性_Php_Overloading_Static Libraries - Fatal编程技术网

用PHP重载静态属性

用PHP重载静态属性,php,overloading,static-libraries,Php,Overloading,Static Libraries,我试图在我使用的框架(CodeIgniter)中自动化访问库的过程,但遇到了一些问题 Codeigniter当前加载的库如下: $this->CI->load->library('name'); $this->CI->name->method(); _Lib::name->method(); 不用说,这是一大堆代码,可以用更少的资源实现 我想这样访问我的库: $this->CI->load->library('name'); $th

我试图在我使用的框架(CodeIgniter)中自动化访问库的过程,但遇到了一些问题

Codeigniter当前加载的库如下:

$this->CI->load->library('name');
$this->CI->name->method();
_Lib::name->method();
不用说,这是一大堆代码,可以用更少的资源实现

我想这样访问我的库:

$this->CI->load->library('name');
$this->CI->name->method();
_Lib::name->method();
然后_Lib类将负责加载正确的Lib(或者在本例中将该Lib的加载定向到loader类)

但是,上面的代码会导致错误“意外的T_对象_运算符”

我的最终目标是能够与库对话,并让它们以尽可能少的代码按需加载,而无需初始化全局变量

有什么想法吗?请记住,它需要看起来尽可能有用和自解释

我希望避免使用像_Lib('name')->method()这样的东西,因为每次编写它都非常繁琐

编辑:

我最终创建了一个默认库,我从中扩展了我的库,默认库的属性将其他库(或模型、或帮助程序或..等)的加载定向到ApproveAte加载程序,所以我可以这样做

$this->lib->name->method();
感谢大家的回答

意外的
T\u OBJECT\u操作符
“错误意味着您对
\u Lib::name
的调用没有返回要从中链接方法调用的对象。从技术上讲,
\u Lib::name
返回
\u Lib
中的类常量
name
的值。你在努力做什么

class _Lib
{
    const name;
}
_Lib::name->method();
但是常数不能容纳对象,所以没有
->

您不想将库转换为静态调用。只要继续使用CI提供的现成功能即可

如果你想有一个类来全局管理你的其他类,请考虑使用A,比如提供的.

< P>“意外的<代码> TyObjutsPuxor < /Calp>”错误意味着你对<代码>的调用:LIB::No.<代码>没有返回一个对象来从方法调用中连线。从技术上讲,
\u Lib::name
返回
\u Lib
中的类常量
name
的值。你在努力做什么

class _Lib
{
    const name;
}
_Lib::name->method();
但是常数不能容纳对象,所以没有
->

您不想将库转换为静态调用。只要继续使用CI提供的现成功能即可


如果你想有一个类来全局管理你的其他类,请考虑使用A,比如提供的.

你写的方式,yLI::Noad是一个类常量。你是说
\u Lib::$name->method()

按照您的编写方式,_Lib::name是一个类常量。你是说
\u Lib::$name->method()

感谢您的回复Gordon,但语法检查导致了该错误,它与可用的属性无关。另外,我只是提供了一个到CI->load->library()函数的快捷方式(或尝试),我没有覆盖它。@Nathan抱歉,我的错。它不是指类属性,而是一个常量。不过效果也一样。PHP解析代码时出现错误的原因是常量不能是对象,因此在获取1的值后不能使用
->
T\u OBJECT\u OPERATOR
)。感谢您的回复Gordon,但语法检查给出了错误,这与可用的属性无关。另外,我只是提供了一个到CI->load->library()函数的快捷方式(或尝试),我没有覆盖它。@Nathan抱歉,我的错。它不是指类属性,而是一个常量。不过效果也一样。PHP解析代码时出现错误的原因是常量不能是对象,因此在获取1的值后不能使用
->
T_OBJECT_操作符
)。很抱歉,但是_Lib::name->method()之间的真正区别是什么;和_Lib('name')->method()?两个字符?。这不是很多,是吗?几乎不“乏味”。如果是的话,我可以推荐一个能帮助你的编辑器吗?这只是我个人的喜好,我不喜欢在不需要引号的字符串的地方工作。事实上,我使用Komodo完成制表符,所以你是对的,它没有那么乏味。我刚才说“乏味”是因为没有更好的词。对不起,_Lib::name->method()之间的真正区别是什么;和_Lib('name')->method()?两个字符?。这不是很多,是吗?几乎不“乏味”。如果是的话,我可以推荐一个能帮助你的编辑器吗?这只是我个人的喜好,我不喜欢在不需要引号的字符串的地方工作。事实上,我使用Komodo完成制表符,所以你是对的,它没有那么乏味。我只是说“乏味”,因为没有更好的词。你是对的,那是我的错误。我使用CodeIgniter的时间太长了,我忘记了如何使用静态类:)谢谢。你说得对,那是我的错误。我使用CodeIgniter的时间太长了,我忘记了如何使用静态类:)谢谢。