我有一个启动另一个类的类,我不关心对象的引用,我只需要方法,并且必须传入新的参数。
class A {
__set .....
}
class B extends A {
$anotherA = new A;
$anotherA->myName = 'stackoverflow';
}简而言之,我希望让类B扩展A,初始化A的一个新实例,但我不想每次都输入" new“,我看到了以下语法:
B::A // something like that但是不确定如何使用它,或者它是否会做我想要做的事情?
发布于 2009-06-19 09:01:05
我将在B的构造函数中创建A的实例,然后您可以使用其构造函数或静态B::create()实例化B,这只是一种快捷方式。如果您希望所有实例化都通过create(),则可以将构造函数设为私有。
class A {
// __set .....
}
class B extends A {
public function __construct() {
parent::__construct();
$anotherA = new A;
$anotherA->myName = 'stackoverflow';
}
public static function create() {
return new self();
}
}
new B();
B::create();发布于 2009-06-19 03:28:05
您可以在返回新实例的类上定义一个静态方法。这基本上是一条“捷径”,但它在后台的功能完全相同。
class C {
public static function instance()
{
return new C();
}
public function instanceMethod()
{
echo 'Hello World!';
}
}现在你可以这样叫它:
C::instance()->instanceMethod();发布于 2009-06-19 03:50:54
这里有一些静态函数的例子-它们可以在不使用'new A‘或'new B’的情况下被调用。
class A {
static function message($msg = 'I am Alpha') {
echo "hi there, $msg\n";
}
}
class B {
static function message() {
A::message("I am Beta");
}
}
A::message();
B::message();https://stackoverflow.com/questions/1016213
复制相似问题