首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php初始化类

使用php初始化类
EN

Stack Overflow用户
提问于 2009-06-19 03:18:45
回答 4查看 276关注 0票数 0

我有一个启动另一个类的类,我不关心对象的引用,我只需要方法,并且必须传入新的参数。

代码语言:javascript
复制
class A {
     __set .....
}

class B extends A {
     $anotherA = new A;
     $anotherA->myName = 'stackoverflow';
}

简而言之,我希望让类B扩展A,初始化A的一个新实例,但我不想每次都输入" new“,我看到了以下语法:

代码语言:javascript
复制
B::A // something like that

但是不确定如何使用它,或者它是否会做我想要做的事情?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-06-19 09:01:05

我将在B的构造函数中创建A的实例,然后您可以使用其构造函数或静态B::create()实例化B,这只是一种快捷方式。如果您希望所有实例化都通过create(),则可以将构造函数设为私有。

代码语言:javascript
复制
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();
票数 0
EN

Stack Overflow用户

发布于 2009-06-19 03:28:05

您可以在返回新实例的类上定义一个静态方法。这基本上是一条“捷径”,但它在后台的功能完全相同。

代码语言:javascript
复制
class C {
   public static function instance()
   {
      return new C();
   }

   public function instanceMethod()
   {
      echo 'Hello World!';
   }
}

现在你可以这样叫它:

代码语言:javascript
复制
C::instance()->instanceMethod();
票数 2
EN

Stack Overflow用户

发布于 2009-06-19 03:50:54

这里有一些静态函数的例子-它们可以在不使用'new A‘或'new B’的情况下被调用。

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1016213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档