zoukankan      html  css  js  c++  java
  • tp5博客项目实战1

    tp5博客项目实战

    开发准备:环境wamp,windows系统为例。看实战博客,默认会搭建开发环境并且tp5框架已经至少有一定的基础。

    tp5的下载与安装

    方法一:直接在官网下载拷贝到wamp你的项目目录。

    方法二:下载安装 composer,打开cmd 打开到你项目的根目录

    更换阿里云的镜像(下载速度快)

    composer	config	-g repo.packagist composer https://packagist.phpcomposer.com
    

    下载

    composer	create-project	topthink/think=5.0.*	tp5		--prefer-dist
    

    此时你所在项目的根目录下就出现了tp5的文件夹

    在浏览器打开localhost/你的站点/tp5/public

    出现

    十年磨一剑...就说明安装成功。

    命名空间

    同一个php里面不能出现相同的两个函数这个时候就需要用到namespace例如这样两个相同名称的函数因为放到了两个不同的命名空间所以不会报错。这就像同一个文件夹里不能出现两个一样名称的文件,我们在这个文件夹里面建两个子文件夹把文件分别放进去就可以了。

    命名空间只对函数,类,以及常量起作用且常量不是define定义的。

    const定义的常量一般在类里面,命名空间可以使其在类外面

    引入了namespace的php前面,在namespace前面不能有任何字符。

    <?php
    namespace kj1;
        function getmsg(){
            echo '123';
        }
        const mn='chenguosong';
    namespace kj2;
        function getmsg(){
            echo 'hello';  
        }
        const mn='chenjialei';
    

    那么怎么找到并使用你想要的那个函数呢?

    kj1getmsg(); 
    echo '<br/>'.kj1mn;
    

    函数可以在空间之前调用,例如这样

    <?php
    namespace kj1;
        function getmsg(){
            echo '123';
        }
        const mn='chenguosong';
        kj2getmsg(); 
    namespace kj2;
        function getmsg(){
            echo 'hello';  
        }
        const mn='chenjialei';
    

    不过常量不行

    多级命名空间

    像这样

    namespace beijinghaidian;
    

    三种访问方式

    1.非限定名称访问方式

    就是直接使用当前命名空间的方法

    namespace kj2;
        function getmsg(){
            echo 'hello';  
        }
        getmsg();
    

    2.限定名称访问方式

    beijinghaidiangetmsg();
    namespace shanghaiputuoqueijinghaidian;
    function getmsg(){
        echo 'hehe';  
    }
    

    3.完全限定访问名称方式

    eijinghaidiangetmsg();
    

    命名空间的引入机制

    空间引入

    use beijinghaidian	iananmen;//引入命名空间
    

    如果要使用空间里面的东西,要用 限定名称访问方式而不能直接用非限定性名称访问方式

    例如这样

        tiananmengetmsg();//命名空间里的方法的使用
       	$animal=new tiananmenanimals();
        echo $animal->obj;//类的方法
        echo tiananmenanimals::$name;//静态常量的访问
    

    引入类元素

    use beijinghaidian	iananmenanimals;//这样就相当于把上一个命名空间的类animals复制了一份到当前的命名空间,可以直接使用,就像使用当前命名空间的类一样。注意,拷贝了一份就得把当前同名称的类给删除。
        echo animals::$name;
        
        $sub=new animals();
        echo $sub->obj;
    

    这样就不用像前面的引入命名空间那样每一个使用都要用 限定名称访问方式。

    公共空间

    命名空间引入公共空间

    没有限定命名空间的php就是公共空间例如有下面两个php

    2.php

    <?php 
    
    function getmsg(){
        echo "上海普陀";
    }
    
    const NM="陈国松";
    

    1.php

    <?php
    namespace beijing;
    header("content-type:text/html;charset=utf-8"); 
        class animals{
            public $obj='dog';
            static $name='大黄';
        }
        function getmsg(){
            echo '北京海淀';
        }
        include("./2.php");//引入公共空间
        getmsg();//使用这个方法打印输出的是 北京海淀 而不是 上海普陀 说明引入的公共空间对当前命名空间是没有影响的,只有你要使用的方法在当前找不到,才会去公共空间寻找
    

    使用公共空间的常量和方法

    include("./2.php");
        echo NM;//如果当前的空间没有这个常量而公共空间有的话也可以直接这样echo NM
        getmsg();
    

    公共空间引入命名空间

    <?php 
    function getmsg(){
        echo "上海普陀";
    }
    const NM="陈国松";
    include("./1.php");
    echo NM;//访问的还是当前的NM
    echo NM;//访问的是当前的NM
    echo eijingNM;//访问命名空间里面的NM
    

    tp5里面命名空间的使用案例

    例如application下面的index下的controller

    命名空间是虚拟的文件目录,是不存在的,但在tp5里面用app/index/controller对应到实际的方便开发

    <?php
    namespace appindexcontroller;
    
    class Index
    {
        public function index()
        {
            return 'hello';
        }
    }
    
    

    fetch方法在thinkphp/library/think/Controller

    <?php
    namespace appindexcontroller;
    use thinkController;
    class Index extends Controller
    {
        public function index()
        {
            return $this->fetch();
        }
    }
    

    这样index.php就可以使用fetch方法了

  • 相关阅读:
    RocketMQ简介
    redis简介
    netcat
    NOI2018 归程
    图论小专题B
    CF558E A Simple Task
    图论小专题A
    初等网络流初步
    2019炎德杯知识能力竞赛 游记
    POJ2176 Folding
  • 原文地址:https://www.cnblogs.com/chenguosong/p/11879449.html
Copyright © 2011-2022 走看看