从函数内部访问 PHP 对象

我创建了一个 PHP 类,我想从另一个文件中的函数访问它的方法。下面是我的代码:


include_once PLUGIN_DIR_PATH."/classes/Brands.php";


function create_tables(){


$brand_obj = new Brands;    

$brand_obj->create_brand_table();           

}


function delete_tables() {


$brand_obj = new Brands;    

$brand_obj->delete_brand_table();

}

是否可以只创建一次对象,然后在每个函数中重用它?现在,我在每个函数中创建对象,这不是一个好习惯。


冉冉说
浏览 211回答 2
2回答

慕勒3428872

我将假设您的实际功能比您发布的功能更多,否则您实际上并不需要功能并且可以简单地执行此操作:$brand_obj = new Brands;    $brand_obj->create_brand_table();            $brand_obj->delete_brand_table();否则,您可以创建一个类并Brands通过其构造函数将依赖项注入其属性之一:class TablesManager{  private $brands;  public function __construct(Brands $brands)  {    $this->brands = $brands;  }  public function create_tables(): void  {    $this->brands->create_brand_table();  }  public function delete_tables(): void  {    $this->brands->delete_brand_table();  }}用法:$brands = new Brands();$tables_manager = new TablesManager($brands);$tables_manager->create_tables();$tables_manager->delete_tables();注意:调用课程SomethingManager有时被认为是不好的做法/表明该课程做了太多事情。考虑(至少)根据您的需要给它一个更准确的名称。演示:https ://3v4l.org/iTmY6非 OOP 替代方案function create_tables(Brands $brand_obj): void {   $brand_obj->create_brand_table();           }function delete_tables(Brands $brand_obj): void {  $brand_obj->delete_brand_table();}$brand_obj = new Brands();    create_tables($brand_obj);delete_tables($brand_obj);

守着一只汪

您可以使用 global 关键字在函数内部使用在函数外部创建的变量:global $object代码示例:include_once PLUGIN_DIR_PATH."/classes/Brands.php";$brand_obj = new Brands;function create_tables(){    global $brand_obj;    $brand_obj->create_brand_table();}function delete_tables() {   global $brand_obj;   $brand_obj->delete_brand_table();}
打开App,查看更多内容
随时随地看视频慕课网APP