我这么写是非常不好的 ,这些都可以写在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下面

php ci下添加一个创建常用的模块和控制器方法的更多相关文章

  1. 痞子衡嵌入式:MCUXpresso IDE下添加C++源文件进SDK工程编译的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下添加C++源文件进SDK工程编译的方法. 最近有客户反映在MCUXpresso IDE下的SDK工程里添加 ...

  2. 给kali的Metasploit下添加一个新的exploit

    转载:https://blog.csdn.net/SilverMagic/article/details/40978081 首先在/usr/share/metasploit-framework/mod ...

  3. Linux下添加磁盘创建lvm分区

    shell> fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command action a toggle a bootab ...

  4. linux下添加自动启动项,linux 开机自动启动脚本方法

    #service servicename status是当前状态#chkconfig --list servicename是查看启动状态,也就是是否开机自动启动 首先写好脚本,如 mysql,把它放到 ...

  5. ASP.NET MVC环境下实现一个网站多个网站模板的方法

    asp.net mvc下实现多个网站模板的方法,让ASP.NET一个网站有多套网站模板,不用的场景下使用不用的mvc 模版.  比如有默认,红,蓝,绿几种网站模板,客户可以根据自己喜好选择自己喜欢的网 ...

  6. python与系统做交互常用的模块和使用方法

    1.使用os模块与系统做简单命令的交互 >>>import os >>>os.popen('pwd') <open file 'pwd', mode 'r' ...

  7. ubuntu下用户的创建、修改

    一.1.添加用户 (1)创建一个新的用户username #sudo useradd username (2)设置用户username 的密码 #sudo passwd username 2.添加用户 ...

  8. 为网站添加一个图标icon

    <link rel="icon" href="/favicon.ico" type="image/x-icon"/> <l ...

  9. Linux(以RHEL7为例)下添加工作区的方法|| The Way To Add Workspace On Linux

    Linux(以RHEL7为例)下添加工作区的方法 The Way To Add Workspace On Linux 作者:钟凤山(子敬叔叔) 编写时间:2017年5月11日星期四 需求:有时候在使用 ...

随机推荐

  1. c++ 在window下创建窗口的基本步骤

    1. WinMain 函数的定义: 2. 创建一个窗口 2.1 设计一个窗口类 WNDCLASS 2.2 注册窗口类 2.3 创建窗口 2.4 显示及更新窗口 3. 进行消息循环 BOOL GetMe ...

  2. Arduino 中 EEprom 写入读取清除

    转自:https://www.arduino.cn/thread-1157-1-1.html EEPROM (Electrically Erasable Programmable Read-Only ...

  3. WebStrom配置TypeScript开发环境

    安装NodeJS node.js下载地址:https://nodejs.org/en/download/ 安装TypeScript npm install typescripot -g 新建tscon ...

  4. 一个Java对象的内存布局

    1.对象的创建过程 class loading class linking(verification,preparation,resolution) class initializing 申请对象内存 ...

  5. 安装haproxy

    安装依赖 yum install -y gcc pcre pcre-devel openssl openssl-devel 创建依赖账号,并禁止账号登录 useradd -M -s /sbin/nol ...

  6. 每日一题 LeetCode 486. 预测赢家 【递推】【前缀和】【动态规划】

    题目链接 https://leetcode-cn.com/problems/predict-the-winner/ 题目说明 题解 主要方法:递推:动态规划:前缀和 解释说明: 求前缀和 pre_nu ...

  7. devops-jenkins部署和基本使用

    1. jenkins部署和基本使用  1.1) 先关闭centos 7的自带防火墙和selinux [root@test-2 ~]# /bin/systemctl stop firewalld [ro ...

  8. MeteoInfoLab脚本示例:数据投影-FLEXPART

    FLEXPART是一个类似HYSPLIT的扩散模式,它输出的netcdf文件参照了WRF,可惜全局属性没有写全,比如只有一个投影名称(例如Lambert),没有相关的投影参数:中央经度,标准纬度等等. ...

  9. js、css等文件引入空白问题

    路径没错,不管路径怎么改变,js.css等文件就是引入失败.很多时候是因为Spring的过滤器把js.css等资源文件拦截了.default是tomcat配置的一个servlet,"Defa ...

  10. C++虚函数与多继承

    虚函数 C++用虚函数实现运行时多态,虚函数的实现是由两个部分组成的,虚函数指针与虚函数表. 虚函数指针(vptr)是指向虚函数表的指针,在一个被实例化的对象中,它总是被存放在该对象的地址首位.而虚函 ...