我正在学习OOP,并且非常混淆彼此使用课程。
我总共有3个班级
//CMS System class
class cont_output extends cont_stacks
{
//all methods to render the output
}
//CMS System class
class process
{
//all process with system and db
}
// My own class to extends the system like plugin
class template_functions
{
//here I am using all template functions
//where some of used db query
}
现在我想在两个系统类中使用我自己的类template_functions。但很困惑如何使用它。请帮我理解这一点。
修改: 我很抱歉,我忘了在不同的PHP文件中提到我自己的课程。
答案 0 :(得分:13)
首先,在使用之前确保您include
类文件:
include_once 'path/to/tpl_functions.php';
这应该在index.php中或在使用tpl_function
的类之上完成。另请注意autoloading
类的可能性:
从PHP5起,您必须自动加载类。这意味着您注册了一个钩子函数,当您尝试使用尚未包含代码文件的类时,每次都会调用该函数。这样做,您不需要在每个类文件中都有include_once
个语句。这是一个例子:
index.php 或任何应用程序入口点:
spl_autoload_register('autoloader');
function autoloader($classname) {
include_once 'path/to/class.files/' . $classname . '.php';
}
从现在开始,您可以访问这些类,而无需担心包含代码文件。试试吧:
$process = new process();
了解这一点,有几种方法可以使用template_functions
类
只需使用:
如果您创建了它的实例,则可以在代码的任何部分访问该类:
class process
{
//all process with system and db
public function doSomethging() {
// create instance and use it
$tplFunctions = new template_functions();
$tplFunctions->doSomethingElse();
}
}
实例成员:
以流程类为例。要在process
类中使template_functions可用,你创建一个实例成员并在某个地方初始化它,在你需要的地方,构造函数似乎是一个好地方:
//CMS System class
class process
{
//all process with system and db
// declare instance var
protected tplFunctions;
public function __construct() {
$this->tplFunctions = new template_functions;
}
// use the member :
public function doSomething() {
$this->tplFunctions->doSomething();
}
public function doSomethingElse() {
$this->tplFunctions->doSomethingElse();
}
}
答案 1 :(得分:0)
您可以扩展template_functions
类,然后可以使用所有功能。
class cont_output extends cont_stacks //cont_stacks has to extend template_functions
{
public function test() {
$this->render();
}
}
class process extends template_functions
{
public function test() {
$this->render();
}
}
class template_functions
{
public function render() {
echo "Works!";
}
}