PHP中如何在类函数中调用其他类对象?传参问题求助
解决PHP中类对象传递到另一个类函数的问题
看你的代码,你已经在db.php里实例化了DBOperations对象$dbo,现在要把这个对象传到DBhandler的函数里,这里给你两种常用且实用的实现方式:
方式1:构造函数注入对象(推荐,符合依赖注入思想)
这种方式在创建DBhandler实例时就把DBOperations对象传入,整个类的方法都能直接复用这个对象,适合需要多次使用的场景。
修改后的newclass.php代码:
require_once('db.php'); class DBhandler { // 声明属性存储传入的DBOperations对象 private $dbOps; // 构造函数接收DBOperations实例 function __construct($dbOperations) { $this->dbOps = $dbOperations; } function __destruct() { // 按需添加资源释放逻辑即可 } // 示例方法:调用传入对象的方法 public function executeDbTask() { // 直接使用存储的DBOperations对象调用方法 $this->dbOps->prepare_param(); } } // 创建DBhandler实例时,把已有的$dbo传进去 $dbHandler = new DBhandler($dbo); // 调用方法测试 $dbHandler->executeDbTask(); // 会输出'test'
方式2:方法参数直接传递
如果只是某个特定方法需要用到DBOperations对象,直接在方法参数里传入即可,更灵活:
修改后的newclass.php代码:
require_once('db.php'); class DBhandler { function __construct() { } function __destruct() { // 按需添加资源释放逻辑即可 } // 方法参数接收DBOperations对象 public function processDbOperation($dbOperations) { $dbOperations->prepare_param(); } } // 创建DBhandler实例 $dbHandler = new DBhandler(); // 调用方法时传入$dbo $dbHandler->processDbOperation($dbo); // 输出'test'
小提示
- 确保
db.php里的$dbo实例在newclass.php中可访问(你已经用require_once引入了,所以没问题) - 要调用的
DBOperations方法必须是public权限(你的prepare_param已经满足,无需调整)
内容的提问来源于stack exchange,提问作者user5443928
相关产品推荐
相关产品推荐

