PHP定义包含类的变量
|
我正在尝试定义一个包含应用程序功能的类的“ 0”个全局实例。
基本上,我正在尝试为我的库创建一个名称空间,因此,我试图使用一个类来保存我的所有函数/方法。
我不想在所有文件的开头都包含“ 1”,因为这很丑陋。
另外,我不必在任何地方都引用变量
$GLOBALS[\'myvar\']
。
我个人认为这是对php的真正监督。
看来我无法定义$myFunctionsGlobal
等超级全局变量
而且我无法像myvar=$classInstance
这样在php中定义变量(实际上是常量)。
命名空间
如果应该使用命名空间来解决此问题,为什么不更广泛地使用它们呢?
例如,Kohana不使用名称空间以及许多其他php库。
我追的是:
class _namespace{
public $_function;
function __invoke($arg){
// Function body
echo $arg;
}
function method(){
;
}
}
$N = new _namespace;
$N(\'someValue\');
$N->method();
function myFunc(){
// I don\'t want global $N;
// I don\'t want $N = $_GLOBALS[\'N\'];
// I don\'t want $N = get_instance();
$N(\'some other value\');
}
解:
在大多数其他语言(如c和js)中,每个变量名称只能有一个对象/函数。 PHP似乎很特殊,可以让您使用具有相同名称的namespaces
,functions
和classes
。为了简化起见,我试图将所有功能归为一个中央变量,但仍具有__invokable
的功能。实际上,具有相同名称的类和函数将提供此功能。
<?
class R{
static function static_method(){
;
}
function method(){
;
}
}
function R(){;}
R();
R::static_method();
$instance = new R();
$instance->method();
在php5.3中,您可以通过定义与名称空间同名的函数来模拟方法的可调用常量。
namespace.php
<? namespace Z;
function init($arg=\'\'){
echo $arg;
}
function method(){
echo \'method\';
}
function method(){
echo \'method2\';
}
othefile.php
include(\'namespace.php\');
function Z($a=null,$b=null){
return Z\\init($a,$b);
}
Z(\'test\');
Z\\method();
Z\\method2();
没有找到相关结果
已邀请:
2 个回复
懊毁暗
。
贡炮逗握惫
但函数将特定于类而不是对象 ------上一篇: 嗨,我不太清楚,但是如果您创建了一个类,那就做:
当您想在班级之外使用它时,您可以执行以下操作:
包括您的课程后,即可访问它 您不需要创建对象,因为它是一个静态变量,只需要包含类即可