PHP:ThinkPHP5.0下载安装和各种配置

简介: PHP:ThinkPHP5.0下载安装和各种配置

1、ThinkPHP5.0简介

composer包管理工具


ThinkPHP3.0不兼容


php环境: 测试 开发 线上

url路由

请求响应

模板视图


MVC 一种设计典范 分离

model 模型 数据

view 视图 界面显示

controller 控制器 业务逻辑


2、环境安装

php > 5.4.0 =5.6.10

php extension: pdo mbstring curl

mysql

apache nginx


集成开发环境

mac MAMP


方式一、github安装

# 只克隆最新代码不克隆历史 
cd www
git clone --depth=1 https://github.com/top-think/think.git think_php
cd think_php
git clone --depth=1 https://github.com/top-think/framework thinkphp

方式二、composer安装

中文官网:docs.phpcomposer.com

cd www
composer --version
composer create-project --prefer-dist topthink/think think_composer

方式三、thinkphp下载

http://www.thinkphp.cn/

下载完整版,解压

方式四、github压缩包下载

think.zip -> think_php

framework.zip -> thinkphp

修改名称

成功标志:浏览器进入publish目录又显示

目录介绍

在没有安装php-fpm的时候启动

php -S localhost:8888 router.php

模块化设计

application: 应用目录; 整个应用所有的内容都写在这个目录当中

命名规范

类 ,属性,方法,常量,函数,变量,数据库

3、访问路径

模块-控制器-方法

通用的控制可以写在common中,它不允许url直接访问

编写公共模块

namespace app\common\controller;
class User
{
    public function showName($name="")
    {
        return "$name";
    }
}

使用公共模块的函数

namespace app\admin\controller;
use app\common\controller\User as commonUser;
class Index extends commonUser
{
    public function index()
    {
        return $this->showName("admin name");
    }
}

访问

http://127.0.0.1:8009/admin/index/index

4、配置

(1)惯例配置

惯例配置: thinkphp/convention.php

可用config()函数查看

 public function config()
    {
        return dump(config());
    }

(2)应用配置

修改application -> app

public/index.php定义配置文件路径

// 定义配置目录
define('CONF_PATH', __DIR__ . '/../conf/');

app同级目录配置文件

conf/config.php

return [
    "user"  => "Peng shiyu",
    "email" => "123456@qq.com"
];

应用配置覆盖惯例配置原理

array_merge($arr1,$arr2),相同的键后面数组的值会覆盖前面的值

(3)扩展配置

conf/extra/email.php

return [
    'user' => 'xx@163.com',
    'password' => '123456'
];

数据库配置两者都可以

conf/extra/database.php

conf/database.php

(4)场景配置

办公和家里可以切换配置

conf/config.php

return [
    'app_status' => 'home'
];

conf/home.php

return [
    'address' => 'home'
];

conf/office.php

return [
    'address' => 'office'
];

conf/extra/database.php > conf/database.php > thinkphp/convention.php

(5)模块配置

目录决定了配置作用域

conf/index/config.php

conf/index/extra/email.php

conf/admin/config.php

conf/admin/extra/email.php

(6)动态配置conf/index/config.php

conf/index/extra/email.php

conf/admin/config.php

conf/admin/extra/email.php

(6)动态配置设置config(key, value)

1、构造函数__construct()中设置整个类生效

2、当前方法配置,当前方法生效

namespace app\index\controller;
class Index
{
    public function __construct()
    {
        config('key', 'value');
    }
    public function index()
    {
        return dump(config());
    }
    public function config()
    {
        config('key', 'value');
        return dump(config());
    }

(7)Config类和config助手函数

thinkphp/library/think/Config.php

// 获取全部
config() 等价于  Config::get()
// 获取单个
config("key") 等价于  Config::get("key")
// 设置
config("key", "value") 等价于  Config::set("key", "value")
// 注意作用域
设置 config("key", "value", "index")  
获取 config("key", "index") 
// 检查存在
bool = Config::has("key") // 不存在和null都是false
config("?key")

5、环境变量配置

.env配置

key=value
[databse]
hostname=localhost
database_hostname=localhost

获取方式一:

$_ENV['PHP_KEY']

获取方式二:

use think\Env;
Env::get('key', 'default');
Env::get('database_hostname', 'default');
Env::get('database.hostname', 'default');

环境配置和场景配置

.env

app_status=dev

config.php

use think\Env;
return [
    'app_status'=> Env::get('app_status', 'dev')
];

dev.php

return [
    'app_now_status'=> 'dev'
];

test.php

return [
    'app_now_status'=> 'test'
];

问题

打印环境变量空白 dump($_ENV);

查看环境变量:dump(phpInfo()); 查找php.ini 文件

修改php.ini

variables_order = "GPCS"
修改为: variables_order = "EGPCS"

或者

;Default Value: "EGPCS"
改为
Default Value: "EGPCS"

关闭:killall php-fpm

启动:php-fpm

指定ini文件启动 php-fpm -c /private/etc/php.ini

6、入口文件

单入口文件

-安全检测

-请求过滤

(1)入口文件绑定

3位

public/index.php

// 自定义绑定 模块/控制器
define('BIND_MODULE', 'admin/index');

访问:http://127.0.0.1:8009/

-> admin index index

conf/config.php

// 开启自动绑定模块
'auto_bind_module'=>true

访问:http://127.0.0.1:8009/api.php

-> api index index

(2)路由设置

conf/config.php

'url_route_must'         => false,
'url_route_on'           => true,

conf/route.php

return [
    'post/:id' => 'index/index/info'
];

app/index/controller/Index.php

class Index
{
    public function index()
    {
        return 'index index index';
    }
    public function info($id)
    {
        echo url('index/index/info', ['id'=>$id]);
        return "api index info $id";
    }
}

访问:http://127.0.0.1:8009/post/5

返回:/post/5.htmlapi index info 5

相关文章
|
3月前
|
关系型数据库 MySQL PHP
PHP和Mysql前后端交互效果实现
本文介绍了使用PHP连接MySQL数据库的基本函数及其实现案例。内容涵盖数据库连接、选择数据库、执行查询、获取结果等常用操作,并通过用户登录和修改密码的功能实例,展示了PHP与MySQL的交互过程及代码实现。
278 0
PHP和Mysql前后端交互效果实现
|
8月前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
398 17
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
530 0
|
9月前
|
关系型数据库 MySQL PHP
源码编译安装LAMP(HTTP服务,MYSQL ,PHP,以及bbs论坛)
通过以上步骤,你可以成功地在一台Linux服务器上从源码编译并安装LAMP环境,并配置一个BBS论坛(Discuz!)。这些步骤涵盖了从安装依赖、下载源代码、配置编译到安装完成的所有细节。每个命令的解释确保了过程的透明度,使即使是非专业人士也能够理解整个流程。
249 18
|
10月前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
395 25
|
12月前
|
SQL 关系型数据库 MySQL
PHP与MySQL的高效交互:从基础到实践####
本文深入探讨了PHP与MySQL数据库之间的高效交互技术,涵盖了从基础连接到高级查询优化的全过程。不同于传统的摘要概述,这里我们直接以一段精简代码示例作为引子,展示如何在PHP中实现与MySQL的快速连接与简单查询,随后文章将围绕这一核心,逐步展开详细讲解,旨在为读者提供一个从入门到精通的实战指南。 ```php <?php // 数据库配置信息 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "test_db"; // 创建连接 $conn = new mysqli($se
314 31
|
安全 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
——深入探索LAMP栈下的高效数据交互与处理技巧 ####
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
深入探索PHP与MySQL的协同工作机制,本文旨在通过一系列实战案例,揭示构建高效、稳定且用户友好的动态网站的秘诀。从环境搭建到数据交互,再到最佳实践分享,本文为开发者提供了一条清晰的学习路径,助力其在LAMP(Linux, Apache, MySQL, PHP/Perl/Python)栈上实现技术飞跃。 ####
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发:从基础到实践####
本文将深入探讨PHP与MySQL的结合使用,展示如何构建一个动态网站。通过一系列实例和代码片段,我们将逐步了解数据库连接、数据操作、用户输入处理及安全防护等关键技术点。无论您是初学者还是有经验的开发者,都能从中获益匪浅。 ####
|
关系型数据库 MySQL PHP
php实现一个简单的MySQL分页
通过本文的详细步骤和代码示例,我们实现了一个简单的PHP MySQL分页功能。主要步骤包括计算总记录数、设置分页参数、查询当前页的数据以及生成分页链接。这种分页方式适用于大多数Web应用,能够有效提升用户体验和页面响应速度。
286 4