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';
那么怎么找到并使用你想要的那个函数呢?
\kj1\getmsg();
echo '<br/>'.\kj1\mn;
函数可以在空间之前调用,例如这样
<?php
namespace kj1;
function getmsg(){
echo '123';
}
const mn='chenguosong';
\kj2\getmsg();
namespace kj2;
function getmsg(){
echo 'hello';
}
const mn='chenjialei';
不过常量不行
多级命名空间
像这样
namespace beijing\haidian;
三种访问方式
1.非限定名称访问方式
就是直接使用当前命名空间的方法
namespace kj2;
function getmsg(){
echo 'hello';
}
getmsg();
2.限定名称访问方式
beijing\haidian\getmsg();
namespace shanghai\putuoqu\beijing\haidian;
function getmsg(){
echo 'hehe';
}
3.完全限定访问名称方式
\beijing\haidian\getmsg();
命名空间的引入机制
空间引入
use beijing\haidian\tiananmen;//引入命名空间
如果要使用空间里面的东西,要用 限定名称访问方式而不能直接用非限定性名称访问方式
例如这样
tiananmen\getmsg();//命名空间里的方法的使用
$animal=new tiananmen\animals();
echo $animal->obj;//类的方法
echo tiananmen\animals::$name;//静态常量的访问
引入类元素
use beijing\haidian\tiananmen\animals;//这样就相当于把上一个命名空间的类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 \beijing\NM;//访问命名空间里面的NM
tp5里面命名空间的使用案例
例如application下面的index下的controller
命名空间是虚拟的文件目录,是不存在的,但在tp5里面用app/index/controller对应到实际的方便开发
<?php
namespace app\index\controller;
class Index
{
public function index()
{
return 'hello';
}
}
fetch方法在thinkphp/library/think/Controller
<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function index()
{
return $this->fetch();
}
}
这样index.php就可以使用fetch方法了
tp5博客项目实战1的更多相关文章
- tp5博客项目实战2
改虚拟主机 (用www.tp5.com直接访问替代localhost/blog/tp5/public) 1.host修改 位置C:\Windows\System32\drivers\etc 127.0 ...
- 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站
这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(一)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(二)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(三)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(四)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(一)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(二)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
随机推荐
- [hdoj5927][dfs]
http://acm.hdu.edu.cn/showproblem.php?pid=5927 Auxiliary Set Time Limit: 9000/4500 MS (Java/Others) ...
- Laradock Laravel database connection refused
Laradock Laravel database connection refused SHARE Laradock is a PHP development environment which ...
- c++学生信息管理系统(window控制台实现鼠标点击操作)
翻起大一时写过的作业代码--一个学生信息管理系统,当时不会使用QT,不会MFC等库,只会c++,但是又想做一个有界面的,能够实现鼠标操作的程序.于是绞尽脑汁查资料,自己造轮子,最终写出来了下面的这个现 ...
- loj #2316
最短路 + 记忆化 记忆化搜索更容易实现 #include <iostream> #include <cstdio> #include <algorithm> #i ...
- 爬虫(六):Selenium库使用
一:Selenium简介 selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处 ...
- 如何查看Linux cpu核数、版本等信息
CPU总核数 = 物理CPU个数 * 每颗物理CPU的核数 总逻辑CPU数 = 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 1.查看CPU信息(型号): [root@iZ2ze1rl2qy ...
- 史上最好用的依赖注入框架Google Guice【转】
Guice是Google开发的一个轻量级,基于Java5(主要运用泛型与注释特性)的依赖注入框架(IOC).Guice非常小而且快. (其他的依赖注入框架还有Dagger,Spring) Spring ...
- sql 分组后每组查询10个
SELECT ID,Name,Class ROW_NUMBER() OVER(PARTITION BY Class ORDER BY ID) as NUM 主要是用到 rownum 里面的 PARTI ...
- arcgis python 表属性转html
import arcpy import sys import string import os tablePath = arcpy.GetParameterAsText(0) filePath = a ...
- CSS中的cursor属性
css中的cursor这个属性是用来设置光标形状的. 这个属性定义了鼠标指针放在一个元素边界范围内时所用的光标的形状. 默认值:auto 继承性:yes 出现版本:css2 JavaScript语法: ...