在其他类中使用php类的最佳方法是什么?

时间:2016-10-12 05:09:36

标签: php oop

假设我有一个名为 Class_Tool_RandomColor 的类。它所做的就是返回一个随机颜色。它有一个名为 getValue()的方法 另一种称为 Class_Tool_RandomLineType 。这个返回行类型,如实线,点缀等等。还使用 getValue()

现在我有很多需要随机颜色和随机线型的类。 Class_Square,Class_Circle,Class_Triangle等......

/* First I create my Class_Tool_RandomColor on top of my php file */
$colorObj = new Class_Tool_RandomColor();
$lineObj = new Class_Tool_RandomLineType();

... ... ... ...

/* Now when I created my other classes I pass the object to them */
$squareObj = new Class_Square($colorObj,$lineObj);

... ...
$circleObj = new Class_Circle($colorObj,lineObj);

... ...

这是最好的方法吗?或者还有其他方法吗? 我想我可以使用extend吗?

class Class_Tool_RandomColor extends Class_Square{

但是如果我使用extend,那么如果多个类可以扩展它呢?

2 个答案:

答案 0 :(得分:0)

如果扩展类,则意味着它将在创建派生类实例的同时加载并占用内存。当您在派生类的所有方法中主要需要父类时,可以使用extends。但是当您需要来自其他类的最小调用时,在类方法中创建实例很有用。 所以,这取决于其他班级的重要程度。

答案 1 :(得分:0)

我认为您正在寻找的术语是IoC,反转控制,但在您走路并开始Dependency InjectionFactories之前抓取,这些是设计模式。你正在踩着更深的水,所以准备好游泳了。

使用service container管理应用程序中的类[对象]的好处是巨大的。 service container实例化您的类,注入对象依赖项。

一些快速的Google搜索结果可帮助您入门:

一些图书馆:

大多数新的php框架都包含某种服务层,用于实现您从上面读取的内容。