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


    先上图:

    由于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);
                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)){
                                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")) && ($file != ".") && ($file != ".."))
                {
                    tree($arr_file, "$directory/$file", "$dir_name/$file");
                }
                else if(($file != ".") && ($file != ".."))
                {
                    $arr_file[] = "$dir_name/$file";
                }
            }
            $mydir->close();
        }
    

    同时还需要配置php.ini文件,添加配置 yaf.use_spl_autoload=1

  • 相关阅读:
    Android-WebView路由登录192.168.1.1
    Win7 & VirtualBox虚拟Ubuntu 本地虚拟机之间文件共享
    Android 简单的JNI编程
    Android ActionBar简单使用
    多个APK之间简单数据共享
    js代码移动Div 移动平台与PC平台
    JavaScript面向对象
    《SSO CAS单点系列》之 APP原生应用如何访问CAS认证中心
    insh.exe:*** Couldn't reserve space for cygwin's heap,Win32 error 0
    解决:SSM框架中普通类调用Service的问题 (转)
  • 原文地址:https://www.cnblogs.com/xinxinmifan/p/yaf_file_suffix.html
Copyright © 2020-2023  润新知