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

创建模板文件:

  这节课老师带领我们开始创建TEMPLATE,按照老师教导的思路,我们希望这样一种代码写法:1、譬如我定义一个变量$name=‘’;2、然后呢我读取一个模板。3、再然后我在这个模板里 设置一些自己的 “显示格式”(逼格)。4、加载模板后可以直接替换成上面的变量。

  一、首先在template文件夹中新建一个index.tpl。内容这么写

<?php echo ‘<?php‘ ?>
/**
* project name: <?php echo $prj_name ?>  //大家想想, 它能运行吗?
*User: <?php echo $prj_author ?>    //能运行吗?
*Date: <?php echo date(‘Y-m-d‘)?>  //能吗?
*/

    echo "hello shenyi";
?>

  好吧,准备工作就做好了,我们在god_frame这个类中的引用它:

<?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);
     //获取外部成员变量并把该函数获取的数组返回成变量列表 
        extract(get_object_vars($this));
        开启PHP的内部缓冲区(内存)
        ob_start();
        //引入模板路径
        include (dirname(__FILE__).‘/template/index.tpl‘);
        //获取缓冲区的内容,并赋给$cnt
        $cnt =ob_get_contents();
        //清理缓冲区内容
        ob_end_clean();

        //在该文件夹下生成一个index.php文件,没有就创建并覆盖
        file_put_contents($this->project_main,"$cnt");
    }
}
?>

   我还需要改进godinit中的start(方法)

    static function start(){
        $get_config = loadConfig();
        $gf = new god_frame($get_config->prj_name);
        $gf -> prj_name = $get_config->prj_name;
        $gf -> prj_author = $get_config->prj_author;
        $gf -> run();
    }

  在命令行中执行这个方法

  

  然后我们看看整个文档的目录结构以及index.php 的内容

   



恶补知识点:

__FILE__:

dirname():

ob_start():开启PHP的内部缓冲区(内存)。把接下来要显示的内容先放到缓冲区里,不着急忙慌的显示出来.
ob_get_contents();函数来获取缓冲区的内容
ob_end_clean(); 可以把缓冲区内容清掉,这样就不会输出内容
ob_end_flush() ;关闭缓冲区,并把内容输出出来
get_object_vars();可以获取类(被实例化的类)中属性变量值,返回数组。

extract();

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

上一课:沈逸老师PHP魔鬼特训笔记(7)--我叫什么名字

时间: 2024-10-10 04:58:02

沈逸老师PHP魔鬼特训笔记(8)的相关文章

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

一.由于上两节课我们把程序放到了/usr/local/bin里面.每次编辑需要sudo .这节课我们使用PHPSTORM来编辑代码,专门把它拷贝出来,然后放到一个叫做home/godpro的文件夹下. 二.现在我们来做一个拷贝脚本,方便自动把home/godpro下的文件拷贝到/usr/local/bin里面 1.我们在godpro下创建一个文件叫做done的文件. echo your password | sudo -S /bin/bash -c ' cp god* /usr/local/bi

沈逸老师PHP魔鬼特训笔记(7)--我叫什么名字

一.生成文件夹. mkdir():--新建目录 bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )//尝试新建一个由 pathname 指定的目录. 参数:pathname:目录的路径. mode:默认的 mode 是 0777,意味着最大可能的访问权.有关 mode 的更多信息请阅读 chmod() 页面. 看到上面的函数了吗?记牢.上节课

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

PHP最牛逼的特性之一出料懒人函数,还有一些魔法函数. 首先我们来认识下__tostring,通过一个巫术方法,我们吧实例转化过后的类,直接当字符串输出.结合我们前面所做的功能,我们在类里面加上这个函数: 在godinit文件中,我们将 <?php require('godconfig.php'); //引入gonconfig这个文件 class godinit //创建一个类,godinit { static $v="god version is 1.2"; //声明一个静态属

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

此课程个人开发环境可以考虑使用Ubuntu ,推荐sublime和PhpStorm作为开发环境.一.PHP的一大特性是:脚本语言.不要编译,写完就可以运行? 然而并不是....... PHP代码要想运行必须有个 “母体”.最直截了当的就是我们编译好的那个 “PHP”可执行程序. 本课程这个母体是放在了  /usr/local/php/bin/php 二.PHP三种运行方式 我们先创建一个文件,取名叫xz1024.为什么不加后缀?你自己看课程去,老师讲课的时候就这么任性,我也跟着任性... <?p

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

为了防止代码让我们混淆不清,大家看视频中的分离方法 1.新建了一个文件夹叫code (这代表是代码) 2.再新建一个文件夹叫page (这代表是页面) 代码该怎么写呢? 这里要记住口诀 1.index.php 永远是 “大内总管”.永远由它来加载code和page 2.code里面的文件永远只能写PHP代码 3.page里面的文件,原则上以写html为主,但是可以嵌入部分PHP代码. 具体请看视频操作. 为了某些原因,我们规定,凡是写变量的文件必须以var.php为文件后缀 譬如code1.va

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

接上一节课,我们专门新建了一个godconfig类,设置了两个属性prj_name(项目名),prj_author(作者),然后我们获取标准输入(stdin)把结果保存在了类里面. 好吧,这节课的名字比较奇葩-我得了”懒癌”,假如我们忘记写godconfig类的属性,我们的程序还会运行吗?答案是依旧可以,PHP会自动给你的类增加属性(这是老师PPT原话).GOON,继续懒下去,现在godconfig类都不想创建了.这里我们用到$gc = new stdClass(); 前面这个点很简单,我就不贴

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

一.这一课会学习到几个懒人函数: 1.file_put_contents (PHP 5, PHP 7) file_put_contents — 将一个字符串写入文件 说明 int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) 和依次调用 fopen(),fwrite() 以及 fclose() 功能一样. If filename does not exi

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

回到第一课,我们学过PHP母体,了解过解析PHP程序.PHP其实内置了一个web服务器,专门给我们开发测试使用,那么接下来我们要完成的是:生成后创建一个web 服务,在浏览器中可以访问. PHP的母体,还能加入参数后启动一些特殊功能. /usr/local/php/bin/php -S localhost:8081 -t 项目的目录 (注意这个S是大写的) 我们可以试一下 (这是课程路径,请根据你的实际路径修改) /usr/local/php/bin/php -S localhost:8081

沈逸老师ubuntu速学笔记(2)-- ubuntu16.04下 apache2.4和php7结合编译安装,并安裝PDOmysql扩展

1.编译安装apache2.4.20 1 第一步: ./configure --prefix=/usr/local/httpd --enable-so 2 第二步: make 3 第三步: sudo make install 2.编译安装libiconv    到这去下载,并编译安装    http://www.gnu.org/software/libiconv/#TOCdownloading 1 第一步:./configure --prefix=/usr/local 2 第二步: make 3