我正在尝试使用单例设计模式来创建一个对象并使用它。
首先我有系统类[工厂]对象
系统类
class system {
public function require_($file) {
if( file_exists($file) ){
require( $file ) ;
}else{
$this -> config_erros['require'][] = $file ;
}
}
public function call($object , $object_name = '') {
if( $object_name == '' ) {
return $this -> {$object} = new $object() ;
}else{
return $this -> {$object_name} = new $object() ;
}
}
public function __autoload($class , $object_name = '') {
if( is_array( $class ) && !empty( $class ) ) {
$class = array_unique($class) ;
foreach( $class as $f ) {
$this -> require_( CLASSES_PATH . $class .'.php' ) ;
$this -> call( $class , $object_name ) ;
}
}else{
$this -> require_( CLASSES_PATH . $class .'.php' ) ;
$this -> call( $class , $object_name ) ;
}
}
}
我有3个班级:
mysqly.php => class mysqly
files.php => class files
image.php => class image
我在这里叫班:
$system = new system ;
$system -> __auto_load( array('mysqly','files','image') ) ;
现在在我的系统对象中,我可以将它用作
$system -> mysqly -> query () ; // call function in mysqly class
$system -> files -> read () ; // call function in files class
$system -> image -> query () ; // call function in image class
截至目前,每件事情都运转良好。
级别2 [将用户模块定义为系统对象中的对象]
现在我想将用户类[users module]添加到系统对象
以下是用户类:
class users implements module {
public function install(){
$system -> mysqly -> exec( '
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(150) NULL,
`username` varchar(50) NOT NULL,
`password` varchar(32) NOT NULL,
`email` varchar(32) NOT NULL,
`group` int(11) NOT NULL,
`register_date` int(10) NOT NULL,
`last_login` int(10) DEFAULT NULL,
`active_code` varchar(32) NOT NULL,
`reset_code` varchar(32) DEFAULT NULL,
`session_code` varchar(32) DEFAULT NULL,
`status` varchar(2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `username` (`username`,`password`,`group`,`status`)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8
') ;
}
public function uninstall(){}
public function update(){}
public function close(){}
}
我会像这样生成它
$system -> require_( MODULE_PATH.'users.php' ) ;
$system -> call ( 'users' ) ;
这很好,但我想执行用户功能[安装]
我可以按如下方式实现:
$system -> users -> install() ;
这是我的问题
我想执行mysql查询[我将使用系统对象上的mysqly对象]
但是如何根据系统对象中的mysqly对象执行查询?
谢谢