抽象类的动态属性 [英] Dynamic properties for abstract class

查看:80
本文介绍了抽象类的动态属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是我想在抽象类公共属性中具有动态值(类的实例)。

My issue is that i want to have a dynamic value (an instance of a class) in an abstract class public property.

我想将实例存储在

// Not allowed
abstract class Abs{
    public $var = new VarClass();
}

// This only works for extended childrens of course, but it should work globally.
class B extends Abs{
    function __construct(){
        $this->var = new varClass();
    }
}

我需要使它具有全球性。可悲的是,抽象类不能具有理想的构造器...魔术方法也不是解决方案,因为系统在运行时定义了类变量,所以未定义的变量也将在魔术方法中运行...

I need this to be global. Sadly abstract classes can't have constructors which would be ideal... Also magic methods aren't solutions too, because the system defines class variables in runtime, so undefined variables would run into the magic methods also...

推荐答案

依赖注入模式可以轻松解决您的问题。在GitHub上检查Pimple,以获取最低限度但有效的解决方案,或使用symfony2依赖注入组件。

Dependency Injection pattern solve your problem elegantly. Check Pimple on GitHub for minimalist but efficient solution or use symfony2 Dependency Injection Component.

GitHub上的Pimple

使用依赖注入容器可以避免耦合,也可以通过Interface代替类。

Using dependency injection container you avoid coupling or can pass an Interface instead a class.

这篇关于抽象类的动态属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆