单身讨厌的对象,无法使用其他对象

时间:2013-05-02 16:33:48

标签: php oop singleton

我正在尝试使用单例设计模式来创建一个对象并使用它。

首先我有系统类[工厂]对象

系统类

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对象执行查询?

谢谢

0 个答案:

没有答案