CI 코드

제목 Widget Class 수정
글쓴이 은랑 작성시각 2015/02/25 19:12:05
댓글 : 5 추천 : 1 스크랩 : 0 조회수 : 29918   RSS
http://ellislab.com/forums/viewthread/109584/ 

의 코드를 이용하여 Widget Class 를 사용하던중 약간의 불편함이 발생하여

약간의 수정을 통해서 widget 실행 PHP 파일의 경로를 변경하여 사용할 수 있도록 변경하였습니다.

이미 많은 고수님들이 사용중이실듯 혹 중복이면 관리자님께서 삭제해 주세요..ㅠㅠ


원문 : http://qnfmfmd.tistory.com/58

 
_assign_libraries();
    }
     
    function run($name)
    {        
        $args = func_get_args();
         
        ///////////////////////////////////////////////////////////////////
        //
        //  @ 변경전
        //
        //  require_once APPPATH.'/controllers/widgets/'.$name.EXT;
        //
        //
        ///////////////////////////////////////////////////////////////////     
         
        ///////////////////////////////////////////////////////////////////
        //
        //  @ 변경후
         
            $require_path   =   str_replace("//", "/", APPPATH.$name.EXT);
         
         
            if( file_exists($require_path) == false )
            {
                echo "NoFile : ".$require_path;
            }// end if
         
            require_once $require_path;
         
            $arrTemp    =   explode("/", $name);
            $name       = $arrTemp[ count($arrTemp)-1 ];
 
 
        ///////////////////////////////////////////////////////////////////
 
        $name       = ucfirst($name);
         
        $widget = new $name();
        return call_user_func_array(array(&$widget, 'run'), array_slice($args, 1));
    }
     
    function render($view, $data = array()) {
        extract($data);
        include APPPATH.'/views/widgets/'.$view.EXT;
    }
 
    function load($object) {
        $this->$object =& load_class(ucfirst($object));
    }
 
    function _assign_libraries() {
        $ci =& get_instance();
        foreach (get_object_vars($ci) as $key => $object) {
            $this->$key =& $ci->$key;
        }
    }
} 
 다음글 슘님의 커스텀 페이지네이션 라이브러리 CI ver. 3... (4)
 이전글 포럼바로가기 apk (1)

댓글

ci세상 / 2015/02/25 23:03:07 / 추천 0
감사합니다. 중복없는데요^^
한대승(불의회상) / 2015/02/26 11:26:33 / 추천 0
좋은 정보 감사 합니다.
 
전상민 / 2015/02/27 09:10:30 / 추천 0
CI 코드 게시판으로 이동합니다.
/ 2016/02/24 09:14:55 / 추천 1

저는 php7 + ci3버전인데 요렇게 사용하고 있어요~ 도움되려나 ...;

<?php (defined('BASEPATH')) OR exit('No direct script access allowed');

define('WIDGET', TRUE);

class Widget {
    function __construct() {
        $this->_assign_libraries();
    }

    public static function run($controller) {
        if (strpos($controller, '.') !== FALSE) {
            list($controller, $method) = explode('.', $controller);
        }

        require_once APPPATH.'controllers/'.$controller.".php";

        // default method
        if (!isset($method)) $method = 'index';
		
        $newArray = explode('/', $controller);
        // class name
        $class = end($newArray);
        unset($newArray);

        if ($class = new $class()) {
            if (method_exists($class, $method)) {
                $args = func_get_args();
                return call_user_func_array(array($class, $method), array_slice($args, 1));
            }
        }
    }

    function _assign_libraries() {
        $CI =& get_instance();
        foreach (get_object_vars($CI) as $key => $object) {
            $this->$key =& $CI->$key;
        }
    }
}

 

한대승(불의회상) / 2016/02/24 10:13:05 / 추천 0
@닉 깔끔 하네요. ^^