2013-05-02 31 views
0

我被告知我必须创建一个config.php文件来保存所有的类。PHP安装程序正确的面向对象类?

例如,假设我有3个类。

第1类:

2类: myCar

3类:

而在config.php我打电话给他们:

$house = new house(); 

$mycar = new myCar(); 

$road = new Road(); 

然后我在每个页面中包含该config.php文件,例如index.php。

但现在,我想延长班路。

我不能在该类中包含config.php?或者在config.php中包含其他类文件。

这是错误的设置类的方式?

如何在无错误的情况下扩展类。

我是否必须每次创建一个新对象?

例子:

而是包括config.php文件的病态做到这一点:

/** 
* Index.php 
**/ 
include("class/house.class.php"); 

$class = new House(); 

echo $class->echoMe("hey"); 

,并在每个文件,我会做同样的,通过创建新的对象,这样的话在需要时我可以扩展一些特定的类?

回答

2
function autoload($class) { 
    if (is_file($file = 'www/content/includes/class/'.$class.'.php')) { 
     require_once($file); 
    } 
} 

spl_autoload_register('autoload'); 

将下面的代码包含在你的config.php文件中。确保您在每个要加载类的文件中都包含配置文件。

确保文件与您调用的类名称相同。举一个例子

$house = new House(); 

需要的类文件名是House.php

开始

<? 
    class House { 

     function something() { 

     } 

    } 
+0

假设我想处理登录,登录位于users.class.php。我可以在login.php中包含users.class.php并执行$ users = new Users();?这是一个合适的方式吗? – user2326532 2013-05-02 12:17:26

+0

更新了我的答案。 – Freddy 2013-05-02 12:22:11

+0

非常感谢,我现在看到..所以现在我只需要在login.php中包含配置,并简单地执行$ users = new Users(); ? – user2326532 2013-05-02 12:26:09

1

每个类文件你可以使用spl_autoload_register()基本上你创建一个名为每次函数一个PHP以前没有遇到的类被调用。

/** 
* config.php 
*/ 
function classAutoLoad($class) { 
    if (file_exists("class/$class.class.php")) 
     include("class/$class.class.php"); 
} 

spl_autoload_register('classAutoload'); 

/** 
* someFile.php 
*/ 
reauire_once('config.php'); 
$house = new House();