Yaf自定义autoload以实现Model文件和Controller文件命名区分

先上图:
905539-20180224173543988-839880.png

由于Yaf作者在设计Yaf框架目录时没有直接区分开models文件和controllers文件,所以在IDE看着会很难受,眼睛离开了编辑器就不大好区分这两个文件夹的文件。所以自己写了一个autoload。

PS:也许大大们觉德没有必要,之前用Tp的时候觉得每个文件都得写上长长的后缀很累人,但是现在觉得都没有很有点kanbudashuang:(

由于yaf.name_suffix只能配置类名,对文件名无效,models和controllers下面的文件名都是类名去掉后缀(默认name_suffiix = 1),但是想在目录里很明确的区分开,就把models文件设置成类名的形式。即UserModel.php。
如果不对此做处理,直接改文件名会出现 Class 'UserModel' not found in XXX的相关错误信息,导致500产生。所以我们就自己加载文件,直接上代码

    <?php

     function autoload ($class_name)
    {
        $root = APP_PATH . '/application';
        $load_path = $root."/models";
        $load_file = $load_path."/".$class_name;

        if (file_exists($load_file . ".php")) {
            require_once $load_file . ".php";
        }
        else{
            $arr_file = array();
            tree($arr_file, $load_path);
    //                var_dump($arr_file);
            foreach($arr_file as $path){
                if (strstr($class_name, "\\")) {
                    $class_name = str_ireplace("\\", "/", $class_name);
                }
                if(strpos($path,$class_name)){
                    $new_load_file = $load_path."/".$class_name;
                        if(file_exists($load_path . $path)){
    //                            var_dump($load_path . $path);
                        require_once $new_load_file . ".php";
                            }
                        }

                    }
                }
            }

    //遍历models文件下的所有文件
    function tree(&$arr_file, $directory, $dir_name='')
    {
        $mydir = dir($directory);
        while($file = $mydir->read())
        {
            if((is_dir("$directory/$file")) AND ($file != ".") AND ($file != ".."))
            {
                tree($arr_file, "$directory/$file", "$dir_name/$file");
            }
            else if(($file != ".") AND ($file != ".."))
            {
                $arr_file[] = "$dir_name/$file";
            }
        }
        $mydir->close();
    }

转载于:https://www.cnblogs.com/xinxinmifan/p/8467204.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值