PHP ci control 如何把一个类分到多个文件中写?

PHP 如何把一个类分到多个文件中写?
需求在php ci上,由于用到user路由,需要把用户后台相关的写到同一个control里面,方法功能太多,文件太大处理起来不方便。
要实现一个静态类的许多静态方法,但是函数众多,希望分到多个文件中去写。
当然也可以定义多个control文件,或者用router做不同的路由解决,但总感觉不自然,不优雅。
最想要的是把这一个类的方法分到多个文件中再引入,而且把这些文件放到一个文件夹下方便管理,用include require这些方法在类里面是无法使用的
在外面和__construct里面引入后不起作用,变成全局方法了,不属于ci类里面的了。
搜索到的大部分是引入另外一个类的方法和自动导入文件夹下其他类的方法,这些测试了都不能解决自己的问题。
<?php
function __autoload($class_name) {
require_once $class_name . ‘.php’;
}
$vars = new IUarts();
print($vars->data);
?>
spl_autoload_register(function ($class) {
include ‘user/’ . $class . ‘.php’;
});

搜索了一上午都没有找到合适的解决方案,最终找到一个可以接受的方法了,在php5.4中使用trait方法。

include ‘user/businessinfo.php’;

class User extends CI_Controller {
function __construct() {
parent::__construct ();
$this->load->model ( ‘usermodel’ );
$this->load->helper ( ‘url’ );
$this->load->library(array(‘session’, ‘lib_login’));
}
//include other class menthod file by trait
use Businessinfo;

user/businessinfo.php
<?php
//businessinfo
trait Businessinfo{

function businessinfo() {
//do something
}

function businessinfo22() {
//do something
}

//end
}
=======================================
php5.4 Traits

<?php
trait Hello {
public function sayHello() {
echo ‘Hello ‘;
}
}

trait World {
public function sayWorld() {
echo ‘World’;
}
}

class MyHelloWorld {
use Hello, World;
public function sayExclamationMark() {
echo ‘!’;
}
}

$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();
?>

暂无评论

发表评论

快捷键:Ctrl+Enter