一些基本的要求和设定
为了使用某些比较特殊的功能以及交流上的方便,我们进行了一些约定。
在这里,首先我们要求PHP的版本至少是5.0,我们推荐版本在5.1或以上, 5.1在性能上比5.0要快得多。其次,我们要进行一些基本的约定:
1. 类命名:
类的命名我们采用如下的方法:
N_Controller_Abstract
这个类的名字包含了它的路径,它应该位于导入的某个类路径(Class Path)下的N/Controller/Abstract.php文件中。
2. 类路径(Class Path):
你可以将类路径看成类似与include_path的一样东西,当我们寻找某个类时,我们会先根据类的名称产生一个类名称路径(类似上面的N/Controller/Abstract.php),然后依次在类路径下寻找。
3. 命名方式:
我们采用的是类似这样的方法、函数命名方式:
getFileExt
而不是
GetFileExt
也不是
get_file_ext
框架总体
我们先简单的将MVC的执行过程封装起来,为次我们需要另外一个类,我们暂时命名为N,类实现放在N.php文件中,所有的文件都置于N文件夹下,它的所有方法我们都设计为静态方法,这样不需要实例化就可以直接调用它的方法:
是的,一个框架的启动类就是这么简单,当然要实际的运行还需要添加诸多功能,下面我们开发为其添加一些必要的东西。
首先是类的寻找问题,根据我们前面的约定,我们已经可以很轻松的知道类的路径了,但是计算机不知道。在PHP5及其之后的版本,提供了autoload功能,即使你不主动加载类文件,php引擎也会帮助你寻找指定的类文件的,它很方便,只是牺牲了一定的效率,我们建议在任何需要的时候主动加载类,因为某些时候自动寻找类可能是相当费时的,当然你不是必须这样做。为了能够主动加载类,我们需要提供一个方法来主动加载,因为N是整个框架运行的基点,所以我们可以将加载类作为它的一个静态方法来实现,最初版本:
这样PHP会在./N/Controller/Abstract.php文件中寻找N_Controller_Abstract类,但是问题来了,如果我们N文件夹不是放在根目录下,例如是放在Libs文件夹下,那么PHP就会抛出异常表示该类找不到。


上面是两种常见的目录安排方式(有些为了安全考虑,甚至将库文件放在站点根目录之外)。第一种N文件夹在根目录下(learning为根目录),第二种在根目录的Libs/文件夹下(schoolPlant为根目录)。我们的N.php是被首页文件(假设为index.php)直接包含了,所以文件包含也是相对index.php的。为了解决这个问题,我们需要导入一些目录作为类目录,下面展示了部分修改后的N类:
这样我们只要在index.php文件中加入如下代码即可寻找到我们的类文件了:
为了使用某些比较特殊的功能以及交流上的方便,我们进行了一些约定。
在这里,首先我们要求PHP的版本至少是5.0,我们推荐版本在5.1或以上, 5.1在性能上比5.0要快得多。其次,我们要进行一些基本的约定:
1. 类命名:
类的命名我们采用如下的方法:
N_Controller_Abstract
这个类的名字包含了它的路径,它应该位于导入的某个类路径(Class Path)下的N/Controller/Abstract.php文件中。
2. 类路径(Class Path):
你可以将类路径看成类似与include_path的一样东西,当我们寻找某个类时,我们会先根据类的名称产生一个类名称路径(类似上面的N/Controller/Abstract.php),然后依次在类路径下寻找。
3. 命名方式:
我们采用的是类似这样的方法、函数命名方式:
getFileExt
而不是
GetFileExt
也不是
get_file_ext
框架总体
我们先简单的将MVC的执行过程封装起来,为次我们需要另外一个类,我们暂时命名为N,类实现放在N.php文件中,所有的文件都置于N文件夹下,它的所有方法我们都设计为静态方法,这样不需要实例化就可以直接调用它的方法:
是的,一个框架的启动类就是这么简单,当然要实际的运行还需要添加诸多功能,下面我们开发为其添加一些必要的东西。
首先是类的寻找问题,根据我们前面的约定,我们已经可以很轻松的知道类的路径了,但是计算机不知道。在PHP5及其之后的版本,提供了autoload功能,即使你不主动加载类文件,php引擎也会帮助你寻找指定的类文件的,它很方便,只是牺牲了一定的效率,我们建议在任何需要的时候主动加载类,因为某些时候自动寻找类可能是相当费时的,当然你不是必须这样做。为了能够主动加载类,我们需要提供一个方法来主动加载,因为N是整个框架运行的基点,所以我们可以将加载类作为它的一个静态方法来实现,最初版本:
这样PHP会在./N/Controller/Abstract.php文件中寻找N_Controller_Abstract类,但是问题来了,如果我们N文件夹不是放在根目录下,例如是放在Libs文件夹下,那么PHP就会抛出异常表示该类找不到。
上面是两种常见的目录安排方式(有些为了安全考虑,甚至将库文件放在站点根目录之外)。第一种N文件夹在根目录下(learning为根目录),第二种在根目录的Libs/文件夹下(schoolPlant为根目录)。我们的N.php是被首页文件(假设为index.php)直接包含了,所以文件包含也是相对index.php的。为了解决这个问题,我们需要导入一些目录作为类目录,下面展示了部分修改后的N类:
这样我们只要在index.php文件中加入如下代码即可寻找到我们的类文件了:
网友评论(0):



