用php初始化类
我有一个初始化另一个类的类,我不关心对对象的引用,我只需要这个方法,并且必须传入新的参数用php初始化类,php,oop,Php,Oop,我有一个初始化另一个类的类,我不关心对对象的引用,我只需要这个方法,并且必须传入新的参数 class A { __set ..... } class B extends A { $anotherA = new A; $anotherA->myName = 'stackoverflow'; } 简而言之,我想让类B扩展A,初始化A的新实例,但我不想每次都键入“new”,我看到了以下语法: B::A // something like that 但是不确定该
class A {
__set .....
}
class B extends A {
$anotherA = new A;
$anotherA->myName = 'stackoverflow';
}
简而言之,我想让类B扩展A,初始化A的新实例,但我不想每次都键入“new”,我看到了以下语法:
B::A // something like that
但是不确定该如何使用它,或者这是否会像我试图做的那样?由于您在B中扩展A,您可以调用类A的方法:
class B extends A {
public function someMethod() {
parent::someMethodName();
}
}
或者,您可以在类中创建静态方法:
class A {
public static function someStaticMethod() { ... }
}
A::someStaticMethod();
如果您确实需要的是新实例,则必须使用
new
操作符。这就是它的用途。因为您在B中扩展了A,所以可以调用类A的方法:
class B extends A {
public function someMethod() {
parent::someMethodName();
}
}
或者,您可以在类中创建静态方法:
class A {
public static function someStaticMethod() { ... }
}
A::someStaticMethod();
如果您确实需要的是新实例,则必须使用
new
操作符。这就是它的用途。您可以在返回新实例的类上定义一个静态方法。这基本上是一种“快捷方式”,但在背景中却完全一样
class C {
public static function instance()
{
return new C();
}
public function instanceMethod()
{
echo 'Hello World!';
}
}
现在你可以这样称呼它:
C::instance()->instanceMethod();
您可以在返回新实例的类上定义一个静态方法。这基本上是一种“快捷方式”,但在背景中却完全一样
class C {
public static function instance()
{
return new C();
}
public function instanceMethod()
{
echo 'Hello World!';
}
}
现在你可以这样称呼它:
C::instance()->instanceMethod();
下面是一些静态函数的示例-可以在不使用“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();
下面是一些静态函数的示例-可以在不使用“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();
我将在B的构造函数中创建A的实例,然后您可以使用其构造函数或静态的
B::create()
,它只是作为快捷方式来实例化B。如果希望所有实例化都通过create()
,可以将构造函数设置为私有
我将在B的构造函数中创建A的实例,然后您可以使用其构造函数或静态的
B::create()
,它只是作为快捷方式来实例化B。如果希望所有实例化都通过create()
,可以将构造函数设置为私有
这是一个可行的方法,但我看不出这比使用
new
有什么好处,除非它应该是一个单例或是一个快捷方式,比如Doctrine\u Query::create()->…有时您希望静态地检索下一个实例,这是在PHP中实现这一点的唯一方法,这是一种可行的方法,但我看不出这比使用new
有什么好处,除非它应该是一个单例或一个快捷方式,如Doctrine\u Query::create()->…有时您希望静态地检索下一个实例,这是在PHP中实现这一点的唯一方法