一、生成文件夹。  

mkdir();--新建目录

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
//尝试新建一个由 pathname 指定的目录。

  参数:pathname:目录的路径。

  mode:默认的 mode 是 0777,意味着最大可能的访问权。有关 mode 的更多信息请阅读 chmod() 页面。

  看到上面的函数了吗?记牢。上节课沈老师留了一个作业,读取god.json文件,生成一个最简单的”骨架”。1、接受参数 start。2、根据prj_name的值生成一个文件夹。3、在新建的文件夹中默认生成一个index.php。

  OK,我们先实现第一步,在godinit文件中写一个方法

 static function start(){
$get_config = loadConfig();
mkdir(getcwd()."/".$get_config->prj_name);
}

  然后./god start,在我的文件路径中,就生成了一个project文件夹。当然,这是课程演示,我们还需要判断下文件夹是否已经存在,不存在才创建,存在的话就不创建。

  改进下这个start()方法:

static function start(){
$get_config = loadConfig();
!file_exists(getcwd()."/".$get_config->prj_name) && mkdir(getcwd()."/".$get_config->prj_name);
}

  上面出现一个函数:file_exists();--检查文件或目录是否存在。我们再来强化下:

bool file_exists ( string $filename )
//检查文件或目录是否存在。

  参数:filename 文件或目录的路径。

  返回值:如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE


  我们继续回到课程中来,生成一个PHP文件:

static function start(){
$get_config = loadConfig();
//判断并生成新的文件夹,没有就创建
!file_exists(getcwd()."/".$get_config->prj_name) && mkdir(getcwd()."/".$get_config->prj_name);
//在该文件夹下判断并生成一个index.php文件,没有就创建
!file_exists(getcwd()."/".$get_config->prj_name."/index.php") && file_put_contents(getcwd()."/".$get_config->prj_name."/index.php","");
}

  OK ,上一节课的作业完成.


这节课的主要内容, 新建一个god_frame.php,写一个专门处理骨架的类。

  既然god是用来做“骨架”的。那么我们需要先建立一个构造函数 ,预先把1、骨架的文件夹名,2、骨架的入口文件预定好。然后我们还要创建一个代表god内核的文件夹core,在下面创建一个子文件夹叫做frame,然后再在frame下创建一个叫template的文件夹,最后,把god_frame.php塞到frame下面.

  在写代码之前,我们还要强化一个魔法函数:

  __autoload();-- 尝试加载未定义的类

void __autoload ( string $class )
//你可以通过定义这个函数来启用类的自动加载。

  参数:class--待加载的类名

//示例
//尝试加载 未定义的类,如果加载了未定义的类,则会自动进入这个函数(如果你写了的话)
function __autoload($classname) //接收一个参数
{
echo $classname; 通过这可以发现,会把你尝试加载的类的“类名”获取到
}

  然后我们今天还要研究下命名空间namespace。然后用use导入命名空间。

  好了,我们来看看我这节课完成的代码:god_frame.php

<?php
namespace core\frame;
class god_frame
{
public $project_folder = ''; //项目文件夹
public $project_main = ''; //入口文件
function __construct($prjName){ //构造函数
$this->project_folder = getcwd()."/".$prjName;
$this->project_main = $this -> project_folder."/index.php"; }
function run(){
//判断并生成新的文件夹,没有就创建
!file_exists($this->project_folder) && mkdir($this->project_folder);
//在该文件夹下判断并生成一个index.php文件,没有就创建
!file_exists($this->project_main ) && file_put_contents($this->project_main,"");
}
}
?>
//godinit
<?php
define('cstring','json');
require('godconfig.php'); //引入gonconfig这个文件
use core\frame;
function __autoload($className){
$className = str_replace('\\','/',$className).'.php';
require ($className);
}
class godinit //创建一个类,godinit
{
static $v="god version is 1.2"; //声明一个静态属性$VERSION static function init() //静态方法 init
{
echo "input your project name?".PHP_EOL;
$prj_name = fgets(STDIN); //重新获取用户输入,并赋值给$prj_name echo "input your author name?".PHP_EOL;
$prj_author = fgets(STDIN); //重新获取用户输入,并赋值给$prj_author
genConfig(TC(array('prj_name'=>$prj_name,'prj_author'=>$prj_author)));
}
function ini(){
$get_config = loadConfig();
foreach($get_config as $k=>$v)
echo $k.":".$v;
}
static function start(){
$get_config = loadConfig();
$gf = new god_frame($get_config->prj_name);
$gf -> run();
}
/* static function make()
{
$pchar=new Phar("god.phar");
$pchar->buildFromDirectory(dirname(__FILE__));
$pchar->setStub($pchar->createDefaultStub('god'));
$pchar->compressFiles(Phar::GZ);
}*/
static function __callStatic($p1,$p2){
echo "error function";
}
}
?>

版权声明:笔记整理者亡命小卒热爱自由,崇尚分享。但是本笔记源自www.jtthink.com(程序员在囧途)沈逸老师的《 PHP魔鬼训练课第一阶段》。本学习笔记小卒于博客园首发, 如需转载请尊重老师劳动,保留沈逸老师署名以及课程来源地址。

 上一课:沈逸老师PHP魔鬼特训笔记(6)--巫术与骨架

 下一课:沈逸老师PHP魔鬼特训笔记(8)

沈逸老师PHP魔鬼特训笔记(7)--我叫什么名字的更多相关文章

  1. 沈逸老师PHP魔鬼特训笔记(8)

    创建模板文件: 这节课老师带领我们开始创建TEMPLATE,按照老师教导的思路,我们希望这样一种代码写法:1.譬如我定义一个变量$name=‘’;2.然后呢我读取一个模板.3.再然后我在这个模板里 设 ...

  2. 沈逸老师PHP魔鬼特训笔记(6)--巫术与骨架

    PHP最牛逼的特性之一除了懒人函数,还有一些魔法函数. 首先我们来认识下__tostring,通过一个巫术方法,我们吧实例转化过后的类,直接当字符串输出.结合我们前面所做的功能,我们在类里面加上这个函 ...

  3. 沈逸老师PHP魔鬼特训笔记(10)

    为了防止代码让我们混淆不清,大家看视频中的分离方法 1.新建了一个文件夹叫code (这代表是代码) 2.再新建一个文件夹叫page (这代表是页面) 代码该怎么写呢? 这里要记住口诀 1.index ...

  4. 沈逸老师PHP魔鬼特训笔记(9)--进化

    回到第一课,我们学过PHP母体,了解过解析PHP程序.PHP其实内置了一个web服务器,专门给我们开发测试使用,那么接下来我们要完成的是:生成后创建一个web 服务,在浏览器中可以访问. PHP的母体 ...

  5. 沈逸老师PHP魔鬼特训笔记(5)

    接上一节课,我们专门新建了一个godconfig类,设置了两个属性prj_name(项目名),prj_author(作者),然后我们获取标准输入(stdin)把结果保存在了类里面. 好吧,这节课的名字 ...

  6. 沈逸老师PHP魔鬼特训笔记(4)

    上一课我们通过shell脚本拷贝代码,了解了静态方法和静态属性.(还有个附件PHAR包,我直接无视了) 然后在GOD文件中写了一些参数, 我们也可以这样,把方法名像拼凑字符串一样拼起来. $get_p ...

  7. 沈逸老师PHP魔鬼特训笔记(3)

    一.由于上两节课我们把程序放到了/usr/local/bin里面.每次编辑需要sudo .这节课我们使用PHPSTORM来编辑代码,专门把它拷贝出来,然后放到一个叫做home/godpro的文件夹下. ...

  8. 沈逸老师PHP魔鬼特训笔记(1)

    此课程个人开发环境可以考虑使用Ubuntu ,推荐sublime和PhpStorm作为开发环境.一.PHP的一大特性是:脚本语言.不要编译,写完就可以运行? 然而并不是....... PHP代码要想运 ...

  9. 沈逸老师PHP魔鬼特训笔记(2)

    一.这一课会学习到几个懒人函数: 1.file_put_contents (PHP 5, PHP 7) file_put_contents — 将一个字符串写入文件 说明 int file_put_c ...

随机推荐

  1. OWA修改密码注意事项

    Exchange搭建参考 http://yuelei.blog.51cto.com/202879/76302 http://543925535.blog.51cto.com/639838/d-37/p ...

  2. [iOS微博项目 - 3.3] - 封装网络请求

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装网络请求 1.需求 为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网 ...

  3. linux常用基本命令

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们.   系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器 ...

  4. 图说Java —— 理解Java机制最受欢迎的8幅图

    原文链接:  Top 8 Diagrams for Understanding Java 翻译人员: 铁锚 翻译时间: 2013年10月29日 世间总是一图胜过千万言! 下面的8幅图来自于 Progr ...

  5. mysql index的长度限制

    在InnoDB Storage Engine中单独一个列的最大的索引长度为767bytes,utf8字符集中,一个字符占3个字节,所以如果列的类型为char,那么要想在此列上建立索引,此列最多只能有2 ...

  6. Linux 批量添加用户

    #!/bin/bashfor i in $(seq 1 50)     #会建立1-50的用户douseradd student$i -g studentecho student$i |passwd ...

  7. 启动Tomcat的时候遇到错误

    严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException at java. ...

  8. SCCM符合性设置

    符合性设置--可以针对注册表值.脚本.文件系统.补丁更新情况进行符合性检查,除了在报表中查看结果外,还可以在CCM客户端 的 配置 中查看符合性评估结果,适合排错1.配置项目---新建针对 注册表值. ...

  9. Apache、Tomcat、JBoss、Weblogic四个常用的JavaEE服务器

    Apache全球应用最广泛的http服务器,免费,出自apache基金组织 Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器 ...

  10. Cocos2d-x--开发参考资料

    1.CocoStudio使用指南 所用版本:CocoStudio v3.0.0 Cocos2d-x1.5b 自己网上查找并整理的一些资料,留下做个纪念,也希望对有需要的人有点帮助 链接地址:http: ...