zoukankan      html  css  js  c++  java
  • php ci下添加一个创建常用的模块和控制器方法

    我这么写是非常不好的 ,这些都可以写在lirbraries里面 (ci就是这么干的)

    我这里是自己用 大概一个模型 没那么多讲究

    现在core/CodeIgniter.php 文件

    
    
    if($modle_file=config_item('modle_file'))
    	{
    		if ($modle_file === TRUE)
    		{
    			$modle_file=config_item('modle_type');
    			$MOF=& load_class('Newfile','core');
    
    			$MOF->createModule($modle_file);  //创建文件加载类
    		}
    	}
    
    

    后在配置文件里面 填写

    
    $config['modle_file']=TRUE;   //是否创建常用的model如 admin  group modules  index  就是常用的 角色管理  账号管理 首页显示 模块管理
    
    $config['modle_type']='new'; // 这个是模板和代码不同 
    
    

    然后在core/下面创建一个CI_Newfile类

    具体代码为:

    
    <?php
    
    /**
     * 这是一个扩展类
     * 
     * 主要用来添加 常用的model模块还有controller控制器
     */
    defined('BASEPATH') OR exit('No direct script access allowed');
    
    /**
     * model、controller扩展类
     *
     * @package		CodeIgniter
     * @subpackage	Libraries
     * @category	Logging
     * @author		shaonian
     * @link		
     */
    class CI_Newfile {
    
    	/**
    	 * 模块列表
    	 *
    	 * @var array
    	 */
        protected $_model_arr=['Admin'];
        
        protected $_model_prefix='Model_';
    
    	/**
    	 * 控制器列表
    	 *
    	 * @var	int
    	 */
    	protected $_controller_arr = [];
    
    	/**
    	 * 目录权限
    	 *
    	 * @var int
    	 */
    	protected $_chmod = 0775;
    
    
    	/**
    	 * 创建时间
    	 *
    	 * @var string
    	 */
    	protected $_date_fmt = 'Y-m-d H:i:s';
    
    	
    
    	/**
    	 * 控制类
         *  
         * 其实这个类 也可以写在扩展里面 因为 ci本来就让扩展用法的
    	 *
    	 * @return	void
    	 */
    	public function __construct($model_arr=NULL,$controller_arr=NULL)
    	{
            //$config =& get_config();  //加载全局配置文件
    
            //判断模块是否空或者数组
            if(empty($model_arr) && is_array($model_arr))
            {
                $this->_model_arr=$model_arr;
            }
            //判断控制器是否空或者数组
            if(empty($controller_arr) && is_array($controller_arr))
            {
                $this->_controller_arr=$controller_arr;
            }
    
        }
    
    
        /**
         * 根据路径创建模块
         *
         * @param [type] $path
         * @return void
         */
        public function createModule($is_type_system='new')
        {
            // if(!is_string($path))
            // {
            //     $path=(string)$path;
            // }
    
          
            //根文件
            $Model_path_base=BASEPATH.'core/newfile/model/'.$is_type_system.DIRECTORY_SEPARATOR;
    
            $this->mkdirs($Model_path_base); //递归创建目录
    
            $get_content=$this->file_get_contents_write($Model_path_base);
    
    
         
    
            //还有一种方法
            /**
             * $content=$get_content instanceof Iterator; 这个详细的方法 看php手册的 迭代接口
             */
    
            foreach($get_content as $model_key=>$content)
            {
    
              
                //创建文件
                $this->mkdirs(APPPATH.'models/sys/');
    
                file_put_contents(APPPATH.'models/sys/'.$model_key.'.php',$content);
            }
    
            
        }
    
    
        /**
         * 循环读取文件并创建
         * 其实可以不用生成器的 反正就4个文件 file_Get_content直接读取 这些文件 还不到 10kb也挺快的
         */
         public function file_get_contents_write($path)
         {
                foreach($this->_model_arr as $val)
                {
                    if(!file_exists($path.strtolower($val).'.txt'))
                    {
                        echo "你的文件{$this->_model_prefix}{$val}未找到,请放入后查看";exit(0);
                    }
                    yield $this->_model_prefix.$val=>file_get_contents($path.strtolower($val).'.txt');
                }
         }
    
    
        /**
         * 递归创建目录
         *
         * @param [type] $dir
         * @return void
         */
        public function mkdirs($dir=NULL)
        {
           return is_dir($dir) or ($this->mkdirs(dirname($dir))) and mkdir($dir,0755);
        }
    
    
    
        
    
    
    
    }
    
    
    
    

    目前我只实现了model创建,目前的构思是 创建常用的controller代码model代码,数据库创建,模板等

    这里使用创建数据库的话,得吧loader里面的database拿过来放在里面或者可以吧这个类加载放在controller下面

  • 相关阅读:
    Hadoop组件
    Vmworkstation启用错误
    sqoop
    ZooKeeper02
    动物管理员--zooKeeper-01
    IP-v4&IP-v6
    hive 基础
    ssh连接失败,排错经验
    Hadoop管理员的十个最佳实践
    OSGi在淘宝内部的使用
  • 原文地址:https://www.cnblogs.com/mengluo/p/10150206.html
Copyright © 2011-2022 走看看