• implemented loader.php


    http://stackoverflow.com/questions/11787176/manage-url-routes-in-own-php-framework

    This is how i implemented loader.php

       <?php
    /*@author arun ak
    auto load controller class and function from url*/
    class loader
    {
        private $request;
        private $className;
        private $funcName;
    
        function __construct($folder    = array())
        {   
            $parse_res  = parse_url($this->createUrl());
            if(!empty($folder) && trim($folder['path'],DIRECTORY_SEPARATOR)!='')
             {
                $temp_path  = explode(DIRECTORY_SEPARATOR,trim($parse_res['path'],DIRECTORY_SEPARATOR));
                $folder_path    = explode(DIRECTORY_SEPARATOR,trim($folder['path'],DIRECTORY_SEPARATOR));
                $temp_path      = array_diff($temp_path,$folder_path);
    
                    if(empty($temp_path))
                    {
                        $temp_path =    '';
                    }
             }else
             {
                if(trim($parse_res['path'],DIRECTORY_SEPARATOR)!='')
                {
                 $temp_path = explode(DIRECTORY_SEPARATOR,trim($parse_res['path'],DIRECTORY_SEPARATOR));
                }
                     else
                 $temp_path ='';
             }
            if(is_array($temp_path))
            {   
                if(count($temp_path) ==1)
                {
                    array_push($temp_path,'index');
                }
                foreach($temp_path as $pathname)
                {   
                    $this->request .= $pathname.':';
                }
            }
            else $this->request = 'index'.':'.'index';
    
        }
    
     private function createUrl()
     {  
        $pageURL  = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
        return $pageURL;
     }
     public function autolLoad()
     {
        if($this->request) 
        {   
            $parsedPath = explode(':',rtrim($this->request,':'));
            if(is_file(APPLICATION_PATH.DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.$parsedPath[0].'_controller'.'.php'))
            {
                include_once(APPLICATION_PATH.DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.$parsedPath[0].'_controller'.'.php');
                if(class_exists($parsedPath[0].'_controller'))
                {
                    $class  = $parsedPath[0].'_controller';
                    $obj    = new $class();
                    //$config       = new config('localhost','Winkstore','nCdyQyEdqDbBFpay','mawinkcms');
                    //$connect  =  connectdb::getinstance();
                    //$connect->setConfig($config);
                    //$connection_obj = $connect->connect();
                    //$db               = $connect->getconnection();//mysql link object
                    //$obj->setDb($db);
                    $method = $parsedPath[1];
                    if(method_exists ($obj ,$parsedPath[1] ))
                    {
                        $obj->$method();
                    }else die('class method '.$method.' not defined');
    
                }else die('class '.$parsedPath[0]. ' has not been defined' );
    
            } else die('controller not found plz define one b4 u proceed'.APPLICATION_PATH.DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.$parsedPath[0].'.php');
    
         }else{ die('oops request not set,i know tis is not the correct way to error :)'); }
     }
    
    }

    Now in my index file

    //include_once('config.php');
    include_once('connectdb.php');
    require_once('../../../includes/db_connect.php');
    include_once('view.php');
    include_once('abstractController.php');
    include_once('controller.php');
    include_once('loader.php');
    $loader = new loader(array('path'=>DIRECTORY_SEPARATOR.'magsonwink'.DIRECTORY_SEPARATOR.'modules'.DIRECTORY_SEPARATOR.'admin'.DIRECTORY_SEPARATOR.'atom'.DIRECTORY_SEPARATOR));
    $loader->autolLoad();

    I haven't used the concept of modules.only controller action and view are rendered.

  • 相关阅读:
    可以自己设计和定的报表工具!
    金山词霸取词冲突
    SSRS 2008 Domain User Issue
    第一次用AX2009正式版!
    顶级会议及期刊
    Python基础常识
    Ubuntu系统下查看安装的CUDA和CUDNN的版本
    js内字符串转数组的基本方法
    JavaScript之逻辑分支
    JS入门
  • 原文地址:https://www.cnblogs.com/oxspirt/p/5706333.html
Copyright © 2020-2023  润新知