9)添加自动加载函数

注意:我把之前的控制器文件名都加了C,不然,那个自动记载函数,我不会写

目录雏形:

      

我开始把自动加载类放在index.php代码的最下面,然后就报了这个错误:

  

因为我把代码中只要是类加载的地方,全部都注释了,所以,所以他报了--------Controller这个类没加载到,哎

气死我了,然后我发现,那个自动加载函数根本没进去,因为我加了这行代码,根本没有输出出来:

后面,我才发现,原来这个index.php代码在前面的第11行发现了错误,那么后面可定就不运行了啊,哎,真是敲得代码少,这样的问题都不知道》》。。。。。。

我的新的index.php代码展示:

    

 1 <?php
 2     /**
 3      * Created by PhpStorm.
 4      * User: Interact
 5      * Date: 2017/8/19
 6      * Time: 22:02
 7      */
 8     //确定分发参数
 9     //动作
10     define(‘CONTROLLER‘,isset($_GET[‘c‘])?$_GET[‘c‘]:‘zixunC‘);
11     define(‘ACTION‘,isset($_GET[‘a‘])?$_GET[‘a‘]:‘show‘);
12     define("PLATFORM",isset($_GET[‘p‘])?$_GET[‘p‘]:‘test‘);
13     function userautoload($class_name){
14
15 //        var_dump($class_name);
16         //先处理确定的(框架中的核心类)
17         // 类名与类文件映射数组
18         $framework_class_list = array(
19             // ‘类名‘ => ‘类文件地址‘
20             ‘Controller‘ => ‘./framework/Controller.php‘,
21             ‘Model‘ => ‘./framework/Model.class.php‘,
22             ‘Factory‘ => ‘./framework/Factory.class.php‘,
23             ‘MySQLDB‘ => ‘./framework/MySQLDB.class.php‘,
24         ) ;
25 //        echo "走没走";
26         //判断是否为核心类
27         if (isset($framework_class_list[$class_name])) {
28             //是核心类
29             require $framework_class_list[$class_name];
30         }
31         //判断是否为可增加(控制器类,模型类)
32         //控制器类,截取后是个字符,匹配Controller
33         elseif (substr($class_name, -1) == ‘C‘) {
34             // 控制器类, 当前平台下controller目录
35             require ‘./application/‘ . PLATFORM . ‘/controller/‘ . $class_name . ‘.controller.class.php‘;
36         }
37         //模型类,截取后5个字符,匹配Model
38         elseif (substr($class_name, -5) == ‘Model‘) {
39             // 模型类,当前平台下model目录
40             require ‘./application/‘ . PLATFORM . ‘/model/‘ . $class_name . ‘.class.php‘;
41         }
42
43     }
44     spl_autoload_register(‘userautoload‘);
45
46
47
48
49     require ‘./application/‘.PLATFORM.‘/controller/‘.CONTROLLER.‘.controller.class.php‘;
50 $controlelr_name=CONTROLLER;
51 $controller=new $controlelr_name();
52 $action_name=ACTION;
53 $controller->$action_name();

注意我的自动加载函数放到了后面类的实例化的前面。

html代码有改动:

    

html代码展示:

     

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="utf-8"><!-- 编码格式是 utf-8 -->
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 使用最新式 ie 内核渲染国内某些 所谓的 双核浏览器 或者是 直接 使用webkit去渲染-->
 6     <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
 7     <!-- 视口属性没有设置 禁用 用户缩放, 如果有需求可以添加-->
 8     <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
 9     <title>bootstrap的模板页</title>
10     <!-- Bootstrap -->
11
12 </head>
13 <body>
14 <table>
15     <tr>
16        <th>ID&nbsp&nbsp&nbsp</th>
17         <th>名字&nbsp&nbsp&nbsp</th>
18         <th>分类&nbsp&nbsp&nbsp</th>
19         <th>作者&nbsp&nbsp&nbsp</th>
20         <th>更新时间&nbsp&nbsp</th>
21         <th>浏览次数&nbsp&nbsp</th>
22         <th>发布状态&nbsp&nbsp</th>
23     </tr>
24     <?php foreach($records as $row) : ?>
25     <tr>
26         <th><?php echo $row[‘ZX_id‘]; ?></th>
27         <th><?php echo $row[‘ZX_name‘]; ?></th>
28         <th><?php echo $row[‘ZX_fenlei‘]; ?></th>
29         <th><?php echo $row[‘ZX_zuozhe‘]; ?></th>
30         <th><?php echo $row[‘gengxin_time‘]; ?></th>
31         <th><?php echo $row[‘liulan_cishu‘]; ?></th>
32         <th><?php echo $row[‘fabu_zhuangtai‘]; ?></th>
33         <th><a href="index.php?a=delete">删除</a></th>
34         <th><a href="index.php?c=newnewnewC&a=hanshu">新的页面展示</a></th>
35     </tr>
36     <?php endforeach ?>
37 </table>
38 </body>
39 </html>

注释掉类加载的地方:

    

    

    

结果展示:

    

      

时间: 2024-11-09 02:40:46

9)添加自动加载函数的相关文章

php 自动加载函数、自动加载方法、自动加载类

在PHP开发过程中,如果希望从 外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来.这个在小规模开发的时候,没什么大问 题.但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且 require_once的代价很大. 在PHP5之前,各个PHP框架如果要实现类的自动加载,一般都是按照某种约定自己实现一个遍历 目录,自动加载所有符合约定规则的文件的类或函数. 当然,PHP

__autoload() 类文件自动加载函数

这个魔术方法是用来自动加载程序所用到类文件的PHP源文件,这样就避免了我们一个一个自动去require或者include了,这个函数会在试图使用尚未被定义的类时自动调用.通过调用此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类,但是我最近看过一篇文章,上面说__autoload()的效率不是很高.以下是示例代码: 1 <?php 2 功能:在当前页使用类时自动加载该类的文件 3 参数$className 为类的名称 可自定义 4 5 */ 6 7 function __auto

PHP .htaccess中添加自动加载的PHP文件

[UPDATE:solution] thx everyone, especially RiaD for its idea, this is what I've done: Edited my .htaccess file at the root of my website and added the following line, #Loads an init php located at <fullpath>/<path-to-folder-with-php-files-to-incl

php自动加载的两个函数__autoload和__sql_autoload_register

一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: printit.class.php //文件 <?php class PRINTIT { function doPrint() { echo 'hello world'; } } ?> index.php //文件 <?php function __autoload( $class ) { $file = $class . '.class.php'; if ( is_

构建自己的PHP框架之自动加载类中详解spl_autoload_register()函数

在了解这个函数之前先来看另一个函数:__autoload. 一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: printit.class.php <?php class PRINTIT { function doPrint() { echo 'hello world'; } } ?> index.php <? function __autoload( $class ) { $file = $class . '.cla

spl_autoload_register自动加载类回调函数实现

随手写的,后台发现用不上,放上来以后可能用的着 1 /** 2 * SPL自动加载类 3 */ 4 class AutoLoad 5 { 6 7 /** 8 * 类文件所在目录 9 * 10 * @var string 11 */ 12 protected $dir = ""; 13 14 /** 15 * 类名与目录名映射数组 16 * 17 * @var array 18 */ 19 protected $map = array(); 20 21 /** 22 * 初始化自动加载类

访问修饰限定符的简单总结、final/abstruct/interface对类的限制、自动加载机制、序列化与反序列化【数据持久化和对象的序列化问题】、对象的拷贝(按引用是因为对象标识)和克隆(__clone方法中的this指向)

1.针对访问修饰限定符的理解只需要两点:(1)针对的是类的概念和访问代码的位置来确定是否能够访问(2)对访问修饰限定符的使用时只需要对该成员的使用场景注意即可[也就是内部,继承类,外部进行访问的权限] 不需要对内部进行太多理解[需要对php底层理解时进行理解] [重点][用途]通过访问修饰限定符将内部成员的权限合理的限制,然后再使用公共接口来调用这个基本服务,保证外部不能访问其内部的构件[这样既能够通过类内的设置,将内部的功能实现更好的限制,只有最外层的接口可以正常被访问到,而不了解内部的业务]

PHP的类文件自动加载机制

搜集于网络,学习php的类的自动加载机制,在实际大型项目中其重要性尤为突出. PHP的类自动加载机制 在PHP开发过程中,如果希望从外部引入一个class,通常会使用include和require方法,去把定义这个class的文件包含进来.这个在小规模开发的时候,没什么大问题.但在大型的开发项目中,这么做会产生大量的require或者include方法调用,这样不因降低效率,而且使得代码难以维护,况且require_once的代价很大. 在PHP5之前,各个PHP框架如果要实现类的自动加载,一般

PHP中类自动加载的方式

最近在学习composer,发现从接触PHP到现在已经遇到了三种关于PHP中类的自动加载方式,这其中包括PHP自带的类的自动加载方式.PHP的第三方的依赖管理工具composer的加载方式以及PHP的Yaf框架下的自动加载方式.本篇博客主要是针对PHP5自带的加载方式进行详细介绍,composer和Yaf下类的自动加载将在接下来的时间里分两篇和大家一起学习.       1.手动加载方式 像C和C++等语言,在PHP中需要使用另一个文件中的相关的类.方法时,可以使用include.include