【问题标题】:how to create master class to access methods of other classes in php如何创建主类以访问php中其他类的方法
【发布时间】:2018-02-24 11:04:01
【问题描述】:

如何创建主类,我可以访问其他类的方法,如下例所示

class DB()
{
 function execute($q)
 {
   // execute 
   return $result;
 }

 function get_rows($q)
 {
  // do some stuff
  return $result; 
 }
}

class Util()
{
 function read_file($f)
 {
   // execute 
   return $result;
 }

 function save_to_file($d, $f)
 {
  // do some stuff
  return $result; 
 }
}

执行

$master = new master();

$q = "SELECT.....";
$content = $master->DB->get_rows($q);
// do some stuff 
$f = time();

$result = $master->Util->save_to_file($content, $f);

【问题讨论】:

  • 不是一个好主意。您可以使用依赖注入容器作为服务定位器……但最好明确说明每个类的依赖关系。使代码更易于维护。 See here
  • 这里提供的代码缺少很多东西。您必须使用 new 关键字为类 DBUtils 实例化对象,并将它们存储在 master 对象的属性中。或者使用静态方法,以便您可以编写DB::get_rows。你最好阅读一些关于 PHP 中 OOP 编程的参考资料,因为你显然缺乏很多关于 php oop 的知识;如果您没有最低 php oop 背景知识,您的问题太宽泛,无法在这里回答
  • @Pierre - 非常感谢...“您必须使用 new 关键字为类 DB 和 Utils 实例化对象,并将它们存储在主对象的属性中。”正是我想要的...

标签: php class wrapper master


【解决方案1】:

感谢@Pierre,我来到了以下

class DB()
{
 function execute($q)
 {
   // execute 
   return $result;
 }

 function get_rows($q)
 {
  // do some stuff
  return $result; 
 }
}

class Util()
{
 function read_file($f)
 {
   // execute 
   return $result;
 }

 function save_to_file($d, $f)
 {
  // do some stuff
  return $result; 
 }
}

class master
{
  public $db; 
  public $util;

  function __construct()
  {
    $this->db = new DB();
    $this->util = new Util();
  }
}

所以现在我可以通过一个包装器访问所有类方法:

$m = new master();
$q = "SELECT ....";
$rows = $m->db->get_rows($q)

$m->util->save_to_file($rows, "file.txt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多