【问题标题】:PHP Design Pattern for using instantiated classes使用实例化类的 PHP 设计模式
【发布时间】:2013-06-23 10:55:33
【问题描述】:

我们正在尝试了解在多个自定义类中使用 mysqli/其他类的最佳方式,这样我们就不会每次都实例化一个新对象。

下面的代码是最好/正确的方法吗?

函数只是示例。

谢谢你:)

<?php  
class Base {

  public function __get($name) {
    if($name == 'db'){
      $db = new mysqli('**', '*s', '*', '*');
      $this->db = $db;
      return $db;
    }

  if($name == 'blowfish'){       
    $blowfish = new PasswordHash(8, true);
    $this->blowfish = $blowfish;
    return $blowfish;
  }
  }

}

class A extends Base {

  public function validate($username, $password) {

    $query = $this->db->query("SELECT * FROM users");

    return $query->num_rows;
  }

  public function password($password)
  {
    return $this->blowfish->HashPassword($password);
  }

}

class PasswordHash {
  public function __construct($iteration_count_log2, $portable_hashes) { }

  public function HashPassword($password) {
    return $password;
  }

}

$a = new A;

echo $a->validate('test','test'); // returns number rows count as expected
echo $a->password('password123'); // returns password123 as expected
?>

【问题讨论】:

    标签: php class oop design-patterns reusability


    【解决方案1】:

    您可能/应该对Dependency Injection 更感兴趣,而不是创建 Base|A 和 MySQL 数据库的紧密耦合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多