没有类的PHP封装?

时间:2011-08-10 01:51:36

标签: php encapsulation

是否有可能在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;

我的意图是避免命名冲突。这个例程虽然有效,但让我很累。如果我不能没有上课,那么有可能不实例化一个类?并立即使用变量或函数?

2 个答案:

答案 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;
?>