我已经创建了一个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();
}
是否可以仅创建一次对象,然后在每个函数中重用它?现在,我在每个函数中都创建对象,这不是一个好习惯。
您可以使用全局关键字来使用在函数内部的函数外部创建的变量:
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();
}
我将假定您的实际功能比您发布的功能要多,否则,您实际上并不需要功能,只需执行以下操作:
$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
有时被认为是不好的做法/表示该类做了太多事情。考虑(至少)为您的需求提供一个更准确的名称。
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);