我想创建一个PHP类,比方说Myclass.php.现在在该类中我想要定义类本身和一些实例变量.但是所有方法都必须来自Myclass_methods.php文件.我可以将该文件包含在类体中吗?
我有很好的理由为什么我要分开这个.简而言之,我将有一个后端,我可以在其中更改类的业务逻辑,而所有其他事情必须保持不变.系统为我维护所有ORM和其他东西.
但是如果这是一个坏主意,那么在编辑业务逻辑之后重新生成整个类文件可能会更好(因此,在这种情况下是用户定义的方法).
性能问题:如果在一个请求中只包含一次Myclass.php,实际上Myclass_methods.php也应该只被包含一次.可能是错的.专家?
假设您正在构建一个将成为打包产品的Web应用程序,用户希望能够扩展和自定义该应用程序.
它附带一个核心库,包含包含类的PHP文件:
/library/
/library/frontend.class.php
/library/filesystem.class.php
/library/backend.class.php
Run Code Online (Sandbox Code Playgroud)
现在,假设您希望保留一个用户无法修补的干净核心.不过,如果需要,您希望用户能够自定义每个螺母和螺栓.
我目前的想法是创建一个自动加载机制,当一个类被实例化时,首先加载核心包括:
/library/frontend.class.php
Run Code Online (Sandbox Code Playgroud)
然后,它切换到user
目录并查看是否存在相同名称的包含:
/user/library/frontend.class.php
Run Code Online (Sandbox Code Playgroud)
如果存在,它也包括它.
显然,用户include必须包含一个类定义,扩展了核心包含中的定义.
现在我的问题是,我将如何实例化这样的类?毕竟,我总能确定有一个定义:
class frontend_core
Run Code Online (Sandbox Code Playgroud)
但我无法确定是否有
class frontend_user extends frontend_core
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够依赖并实例化一个类名,无论是否有类的自定义扩展.
是否有一种聪明的方式,想法或模式如何实现这一目标?
当然,我可以编写一个简单的工厂辅助函数,首先查找user
该类,然后查找core
该类并返回一个初始化对象,但我真的希望尽可能保持简洁,因为正如我所说,它是将成为一个包装产品.
我正在寻找一种使用尽可能少的代码的智能技巧或模式,并尽可能少地引入新功能.