tp5博客项目实战1

Posted chenguosong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法了

以上是关于tp5博客项目实战1的主要内容,如果未能解决你的问题,请参考以下文章

项目Thinkphp5.1制作博客CMS

项目Thinkphp5.1制作博客CMS

项目Thinkphp5.1制作博客CMS

tp5.0实战开发大型cms配置列表的显示和分页

仿百度糯米TP5项目笔记

TP5.1让验证码在另外的项目(Electron-vue)里面使用