亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從函數內部訪問 PHP 對象

從函數內部訪問 PHP 對象

PHP
冉冉說 2022-07-02 16:57:00
我創建了一個 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();}是否可以只創建一次對象,然后在每個函數中重用它?現在,我在每個函數中創建對象,這不是一個好習慣。
查看完整描述

2 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

我將假設您的實際功能比您發布的功能更多,否則您實際上并不需要功能并且可以簡單地執行此操作:


$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);


查看完整回答
反對 回復 2022-07-02
?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

您可以使用 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();

}


查看完整回答
反對 回復 2022-07-02
  • 2 回答
  • 0 關注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號