【发布时间】:2014-10-01 05:59:24
【问题描述】:
我是 php 的新手,但我会尝试直截了当。 我有一个名为 ConnectionManager 的类
class ConnectionManager
{
function ConnectToDB()
{
//PDO connection code
}
}
在我的另一个经理 InstitutManager 中,我使用 require_once($filename) 来访问我的 ConnectionManager 功能
require_once('../manager/ConnectionManager.php');
class InstitutManager
{
protected $connInstance;
function _construct()
{
$this->connInstance = new ConnectionManager;
}
function getInstituts()
{
$conn = $connManager->ConnectToDb();
//retrieve instituts
}
}
问题是:我应该在 InstitutManager 中使用 extends ConnectionManager 而不是 require_once 吗?为什么我应该多用一个?
谢谢
编辑:更改 InstitutManager 类的代码
这样可以吗?或者我应该在function _construct($conn) 中实例化我的连接的情况下传递一个参数?
【问题讨论】:
-
如果你要扩展一个类,你仍然需要包含那个文件(有定义)
-
require 与extends 非常不同......它们的用途完全不同,即使您扩展,您仍然需要ConnectionManager.php 文件
-
您的代码也确实会更好地在 InstitutManager 构造函数中为 ConnectionManager 设置一个类属性,而不是需要为每个需要它的方法实例化一个新的 ConnectionManager
-
如果 InstitutManager 中的功能是 ConnectionManager 中功能的本地扩展,那么您可以说 IM 扩展了 CM。但是,如果 CM 只是一个通用数据库类,IM 不会扩展它,因为它们是互斥的类,而且 IM 使用 CM 但不会扩展它的功能。只需要求它并像您一样启动一个新实例是正确的。
标签: php oop extends require-once