我的课程正在逐渐增加。它是执行db,blob,文件操作等框架的引擎。
该类被大量使用来自不同的组件,我不想将monolithe重构为子类,因为它周围的代码太多会破坏。
我可以和
一起生活class engine {
include 'core/db.php';
include 'core/blob.php';
include 'core/profiler.php';
function __construct($config..) {
}
}
包含核心/ db.php,包含
中的方法<?php
function dbPrepare($sql,$args) {
...
}
...
我可以接受结果,但是PHP不会让我投入一个包含它需要函数的包含。
任何解决方案? (我已经触及了让引擎根据子组件的变化重建自己但放弃了混乱的想法。)
答案 0 :(得分:1)
使用traits汇集您的课程。基本上你每个文件都声明一个特征
<强>芯/ db.php中强>
trait Db
{
public function dbPrepare($sql, $args)
{
// ...
}
public function dbSomethingElse()
{
// ...
}
}
<强>芯/ blob.php 强>
trait Blob
{
public function blobMeBabyOneMoreTime()
{
// ...
}
}
然后将它们组装在主文件中( engine.php )
require 'core/db.php';
require 'core/blob.php';
class engine {
use Db;
use Blob;
}
PS:你应该研究自动加载和名称空间,避免手动包含文件。