【问题标题】:Remove case from code从代码中删除大小写
【发布时间】:2011-09-26 10:33:33
【问题描述】:

config.php

define('DB_TYPE', 'MYSQL');

dbManager.php

incude_once('config.php');
switch ( DB_TYPE ) {
   case 'MYSQL':    $this->_dataObject = MySqlDB::_getInstance();   break;
   case 'PGSQL':    $this->_dataObject = PostgreDB::_getInstance(); break;
   case 'SQLITE':   $this->_dataObject = SqliteDB::_getInstance();  break;
}

这段代码可以在没有case的情况下重写吗?比如:

$this->_dataObject = DB_TYPE::_getInstance();

这给了我一个错误Fatal error: Class 'DB_TYPE' not found .... in line ...

【问题讨论】:

    标签: php case


    【解决方案1】:

    也许

    $DBClassName = 'MySqlDB';
    $this->_dataObject = $DBClassName::_getInstance();
    

    【讨论】:

      【解决方案2】:

      试试:

      $c = TYPE;
      $this->_dataObject = $c::_getInstance();
      

      但是,这段代码看起来可以从依赖注入中受益

      class YourClass {
      
        public function __construct(DataObject $dataObject) {
          $this->_dataObject = $dataObject;
        }
      
      }
      

      然后在实例化时将数据对象传递给您的类

      【讨论】:

        【解决方案3】:
        $dbClasses = array(
            'MYSQL' => 'MySqlDB',
            'PGSQL' => 'PostgreDB',
            'SQLITE'=> 'SqliteDB',
        };
        
        $dbClass = $dbClasses[DB_TYPE];
        
        $this->_dataObject = $dbClass::_getInstance();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-31
          • 2012-02-02
          相关资源
          最近更新 更多