对一个基类分组或特质

时间:2019-04-09 06:58:22

标签: php

我正在实现诸如创建基于组件的应用程序之类的东西

-- loader.php
    -- comonents folder
        -- router.php
        -- database.php
        -- payment.php
        -- other components...

loader.php中,有一个基类,据称它将对components文件夹中的所有组件文件进行分组,以便前端应用程序可以通过该基类访问所有组件,例如

loader.php

class loader{
    // components here
}

$loader = new loader;

然后在我的前端应用程序中,我可以做。.

index.php

<?php require_once(__DIR__.'/loader.php'); ?>

<!DOCTYPE html>
<html>
    <head>
        <?php $loader->router(); ?> // get router.php component and use
    </head>
    ....

现在,可以使用php trait创建组件,并且只需

class loader{
    use Router, Database...; // put all traits
}

因此可以通过loader类访问它们,但是问题是,无论何时创建或删除组件,我都不想转到class loader编辑所有特征的调用,应该是自动反映。在当前的php反射和继承功能中,似乎是不可能的。 PHP中有没有办法实现这种想法?

我可以创建一个配置并添加所有组件的文件名,例如

$config['components'] = [ 'Router', 'Database' ...

只需在loader.php中执行此操作,并消除基类

foreach( $config as $c ){
   require_once(__DIR__.'/components/'.$c.'.php');
   $$c = new $c(); // array value to variable then initialize component class using array value since name all the way are the same
}

然后在前端应用中执行

<?php require_once(__DIR__.'/loader.php'); ?> // compose of loop components

<!DOCTYPE html>
<html>
    <head>
        <?php $router(); ?> // get router.php component and use
    </head>

但是我不想这样做,我想尽可能将所有特征或类基础组件归为一个基础类,然后该基础类将可被前端应用程序调用(index.php )。有什么帮助吗,想法吗?

0 个答案:

没有答案