是否有可能在PHP中封装,变量或函数,而不将它们包装在类中?我在做的是:
//Include the file containing the class which contains the variable or function
include('SomePage.php');
//Instantiate the class from "SomePage.php"
$NewObject = new SomeClassFromSomePage();
//Use the function or variable
echo $NewObject->SomeFuncFromSomeClass();
echo $NewObject->SomeVarFromSomeClass;
我的意图是避免命名冲突。这个例程虽然有效,但让我很累。如果我不能没有上课,那么有可能不实例化一个类?并立即使用变量或函数?
答案 0 :(得分:3)
要在不实例化的情况下使用类方法和变量,必须将它们声明为static
:
class My_Class
{
public static $var = 123;
public static function getVar() {
return self::var;
}
}
// Call as:
My_Class::getVar();
// or access the variable directly:
My_Class::$var;
使用PHP 5.3,您还可以使用namespaces
namespace YourNamespace;
function yourFunction() {
// do something...
}
// While in the same namespace, call as
yourFunction();
// From a different namespace, call as
YourNamespace\yourFunction();
答案 1 :(得分:2)
PHP Namespaces用于存档完全相同的目标:
<?php // foo.php
namespace Foo;
function bar() {}
class baz {
static $qux;
}
?>
使用这样的调用命名空间函数时:
<?php //bar.php
include 'foo.php';
Foo\bar();
Foo\baz::$qux = 1;
?>