我这么写是非常不好的 ,这些都可以写在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. JavaFX FileChooser文件选择器、DirectoryChooser目录选择器

    参考:https://www.yiibai.com/javafx/javafx_filechooser.html 参考:https://blog.csdn.net/dorma_bin/article/ ...

  2. A4988两相四线步进电机驱动模块使用经验

    1.A4988模块可以驱动两相四线步进电机,模块引脚及接线图如下: 2.步进电机引线如下: 3.引脚: ENABLE:低电平有效,用于打开和关闭场效应管的输出: RESET:低电平有效,芯片复位: S ...

  3. ASP。NET Core Blazor CRUD使用实体框架和Web API

    下载source code - 1.7 MB 介绍 *请查看我的Youtube视频链接来学习ASP.NET Core Blazor CRUD使用实体框架和Web API. 在本文中,我们将了解如何为A ...

  4. VMware安装的Linux系统忘记密码 怎么修改root密码

    因为昨天新安装过虚拟机设置了新的密码,再加上我好长时间没有用自己旧的虚拟机,导致忘记了密码,原来虽然知道在单用模式下,找回密码,但是确实是自己从来都没有做过,还好我们组大手飞翔哥告诉了我,怎么找回ro ...

  5. day52 Pyhton 前端03

    内容回顾 块级标签: div p h 列表:ol;ul;dl 表格:table 行内标签: span a i/em b/strong u/del 行内块: input textarea img 其他: ...

  6. 对json数组按照id精确查询并修改值

    //json数组,里面有一个id等于5的,班级的标识和名称不是该班级,通过id把班级信息修改为指定的信息 var zNodes=[ { id:1, classid:1, className:" ...

  7. spring-boot-route(十八)spring-boot-adtuator监控应用

    Spring Boot提供了良好的服务监控模块,只需要通过简单的配置便可以完成服务监控和管理.但是服务监控这块内容往往是最容易被忽略的一块内容,今天我们一起来学习一下使用spring-boot-act ...

  8. 【应用服务 App Service】在Azure App Service中使用WebSocket - PHP的问题 - 如何使用和调用

    问题描述 在Azure App Service中,有对.Net,Java的WebSocket支持的示例代码,但是没有成功的PHP代码. 以下的步骤则是如何基于Azure App Service实现PH ...

  9. 【应用程序见解 Application Insights】在Application Insights中通过自定义查询结果定义指标并显示在Dashboard中

    问题情形 通过Application Insights收集到指标数据后,如Request,Trace,Exception.但是默认的Insights图表不能满足业务的需求,需要自定义相应的类SQL语句 ...

  10. Linux命令的内部命令执行

    一个命令可能既是内部命令也是外部命令 因为内部命令优先级高,先执行内部命令 [04:21:44 root@C8[ ~]#type -a echo echo is a shell builtin ech ...