如何确保实现接口的类必须必须定义属性 我确实有一个称为JSONABLE的界面。 接口jsonabe { 公共功能tojson(); } 我确实有两个实现接口的类。 类Facebook TransFormer实现JSONABLE {

问题描述 投票:0回答:3

class facebookTransformer implements Jsonable{ protected $facebookHandler; public function __construct(){ $this->facebookHandler = new FacebookHandler(); } public function toJson(){ } }

second class:
class googleTransformer implements Jsonable{

  protected $googleHandler;

  public function __construct(){

   $this->googleHandler = new GoogleHandler();
  }
  public function toJson(){ 

  }

}

现在,我知道所有新类都将遵守接口。我的问题是,我可以以某种方式强制所有实现接口以定义属性并通过构造函数使其命令的类别吗?还是可以在接口中添加构造函数,可以吗?
我想确保所有其他类都具有
$handler

属性。

	

您可以使用抽象方法通过派生的类强制实现。 The $handler can be declared as a property of an abstract class so every derived class will inherit it.

abstract class Class1{ protected $handler = ""; abstract function toJson(); } class Class2 extends Class1{ public function toJson(){ $this->handler = "a value"; return $this->handler; } } $foo = new Class2(); echo $foo->toJson();

    

php oop interface
3个回答
2
投票

public function getHandler() ;

在此方法中,该类将返回
$handler

1
投票

从php 8.4使用
 -property钩子

接口定义


0
投票

interface Jsonabe { public Handler $handler { get; } public function toJson(); } } 使用属性的实施 class FacebookTransformer implements Jsonable { protected Handler $handler; public function __construct() { /* Assuming FacebookHandler extends/implements the Handler class */ $this->handler = new FacebookHandler(); } public function toJson() { // ... } }

使用属性钩的实施

class FacebookTransformer implements Jsonable { public Handler $handler { get { /* Assuming FacebookHandler extends/implements the Handler class */ return new FacebookHandler(); } } public function toJson() { // ... } }


最新问题
© www.soinside.com 2019 - 2024. All rights reserved.