PHP
| spec |
| ------ | --------------------------- |
| PSR-1 | Basic Coding Standard |
| PSR-2 | Coding Style Guide |
| PSR-3 | Logger Interface |
| PSR-4 | Autoloading Standard |
| PSR-6 | Caching Interface |
| PSR-7 | HTTP Message Interface |
| PSR-11 | Container Interface |
| PSR-12 | Extended Coding Style Guide |
| PSR-13 | Hypermedia Links |
| PSR-14 | Event Dispatcher |
| PSR-15 | HTTP Handlers |
| PSR-16 | Simple Cache |
| PSR-17 | HTTP Factories |
| PSR-18 | HTTP Client |
- PHP Standards Recommendations
- ZTS - Zend Thread Safety
- 缓存
- APC
- 支持 opcode 和 数据缓存
- System Cache Entries
- Per-Directory Entries
- User Cache Entries
- APCu
- 提供 APC 中的数据缓存功能
- XCache
- OPCache
- 5.5 集成
- 替代 APC 的 opcode 缓存, XCache
- APC
# CentOS
# 查看安装文件
rpm -ql php-fpm
yum instal yum-utils
# 查看已安装的文件
repoquery -lq --installed time
# 內建 web 服务
# http://php.net/manual/zh/features.commandline.webserver.php
php -S 0.0.0.0:8082 -c php.ini
# 判断是否有响应模块
php -i "(command-line 'phpinfo()')" | grep -i grpc
# PHP 常用配置
date.timezone=Asia/Shanghai
Docker
# wener/php:app
# php7 + nginx + mongo,redis,grpc extension + composer
docker run --rm -it --entrypoint bash wener/php:app
PHP 7
- opcache
laravel
# 可使用代理 https_proxy=http://127.0.0.1:7777 http_proxy=http://127.0.0.1:7777
composer global require -vvv "laravel/lumen-installer"
composer create-project --prefer-dist laravel/lumen -vvv blog
cd blog
php -S localhost:8000 -t ./public
php artisan make:migration create_users_table
# 修改 Mirage 下的数据,添加 User 表的 migrate
# 添加 UserTableSeeder 往 User 插入数据
php artisan migrate
# 可以回滚
php artisan migrate:rollback
# 调用 seeder
php artisan db:seed
Lumen
- Laravel Lumen
- The stunningly fast micro-framework by Laravel.
- 主要做 REST 服务
CentOS
# 7.x
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 该仓库中的内容可以查看 https://uk.repo.webtatic.com/yum/el7/SRPMS/RPMS/
# 现在可以直接安装 56 版本
yum install php56w php56w-opcache
# 也可以使用插件来替换本地的 php 版本
yum install yum-plugin-replace
yum replace --enablerepo=webtatic-testing php-common --replace-with=php56w-common
Composer
- paquettg/php-html-parser
- 国内镜像
- 私有仓库
- https://getcomposer.org/doc/04-schema.md
- https://getcomposer.org/doc/03-cli.md
# 使用中国镜像安装
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer
# 使用国内镜像
# 修改全局配置
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 修改当前项目
composer config repo.packagist composer https://packagist.phpcomposer.com
# 初始化
composer init
# 添加依赖
composer require paquettg/php-html-parser
# 移除依赖
composer remove paquettg/php-html-parser
# 安装依赖
composer install
# 更新依赖
composer update
composer update --lock
composer dump-autoload --optimize
composer about
composer archive
composer browse
composer clear-cache
composer config --list
composer create-project symfony/standard-edition dir/
composer depends vendor-name/package-name
composer diagnose
composer global
composer help
composer init
composer licenses
composer list
composer remove
composer run-script
composer search my keywords
composer self-update
composer show
composer suggest
composer status
composer validate
- 安装好后只需要添加一下 autoload 即可使用
<?php
require __DIR__ . '/vendor/autoload.php';
satis
# 可以映射主机上的主目录以利用缓存
# -v $COMPOSER_HOME:/composer
docker run --rm -it -v $PWD/build:/build --entrypoint /bin/sh composer/satis
# 当构建完成后直接上传为静态站点即可
rsync -avz build/ my-server:/var/www/html
satis.json
{
"name": "MyRepo",
"homepage": "https://composer.example.org",
"repositories": [
{
"type": "vcs",
"url": "https://example.org/code/api-php.git"
},
{
"type": "vcs",
"url": "https://example.org/code/other-php.git"
}
],
"require-all": true
}
cd /build
# 创建 satis.json
php /satis/bin/satis build satis.json .
# 或者 docker 构建
docker run --rm -it -v $PWD/build:/build composer/satis
rsync -avz --delete ./build/ root@my-host:/mysite
ThinkPHP5
- ThinkPHP5.0 完全开发手册
- 需求
- PHP >= 5.4.0
- PDO PHP Extension
- MBstring PHP Extension
- CURL PHP Extension
composer create-project topthink/think tp5 --prefer-dist
cd tp5
# 启动自带 web 服务器
php -S localhost:8888 application/route.php
# 使得 think 可执行
# 不操作这一步也可以直接使用 php think 来执行
chmod +x think
# 查看所有命令
./think list
# Available commands:
# build Build Application Dirs
# clear Clear runtime file
# help Displays help for a command
# list Lists commands
# make
# make:controller Create a new resource controller class
# make:model Create a new model class
# optimize
# optimize:autoload Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.
# optimize:config Build config and common file cache.
# optimize:route Build route cache.
# optimize:schema Build database schema cache.
# 生成定义的文件
# 默认会使用 application/build.php
./think build
# 使用指定的配置文件
./think build --config build.php
目录结构
project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件
│ ├─tags.php 应用行为扩展定义文件
| ├─build.php 自动生成定义文件
│ └─route.php 路由配置文件
├─extend 扩展类库目录(可定义)
├─public WEB 部署目录(对外访问目录)
│ ├─static 静态资源存放目录(css,js,image)
│ ├─index.php 应用入口文件
│ ├─router.php 快速测试文件
│ └─.htaccess 用于 apache 的重写
├─runtime 应用的运行时目录(可写,可设置)
├─vendor 第三方类库目录(Composer)
├─thinkphp 框架系统目录
│ ├─lang 语言包目录
│ ├─library 框架核心类库目录
│ │ ├─think Think 类库包目录
│ │ └─traits 系统 Traits 目录
│ ├─tpl 系统模板目录
│ ├─.htaccess 用于 apache 的重写
│ ├─.travis.yml CI 定义文件
│ ├─base.php 基础定义文件
│ ├─composer.json composer 定义文件
│ ├─console.php 控制台入口文件
│ ├─convention.php 惯例配置文件
│ ├─helper.php 助手函数文件(可选)
│ ├─LICENSE.txt 授权说明文件
│ ├─phpunit.xml 单元测试配置文件
│ ├─README.md README 文件
│ └─start.php 框架引导文件
├─build.php 自动生成定义文件(参考)
├─composer.json composer 定义文件
├─LICENSE.txt 授权说明文件
├─README.md README 文件
├─think 命令行入口文件
代码
-
thinkphp/start.php
- 系统默认的一个引导文件
- 加载系统常量定义
- 加载环境变量定义文件
- 注册自动加载机制
- 注册错误和异常处理机制
- 加载惯例配置文件