Доброе утро. Столкнулся с проблемой в автозагрузке trait'ов, в итоге родился грязный костыль.
index.php
| Код | ini_set('include_path', '/trait/');
function __autoload( $class ) { require $class.'.php'; }
function load_class( $class = null ) { static $obj = array();
if( $class === null ) exit( 'Class name is null '.$class ); if( ! isset( $obj[$class] ) ) { $load = '/classes/'.mb_strtolower( $class ) . '.php';
if( ! file_exists( $load ) ) exit( 'File class is not found '.$load ); include $load; $obj[$class] = new $class(); }
return $obj[$class]; }
$test = load_class('test'); $test->t();
|
classes/test.php
| Код | class test { use MyTrait; }
|
trait/mytrait.php
| Код | trait MyTrait { public function t() { echo __METHOD__; } }
|
Но такое способ не тру( Может существует более элегантное решение?
P.S. допустим все классы лежат в папке classes, а трейты в trait
Добавлено через 46 секунд Можно конечно сделать так
| Код | spl_autoload_register('load_class');
|
но опять такие, надо как то вычислить что пытаемся загрузить трейт, а не класс |