whoru

学习、分享、交流、沉淀

Composer 是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。

0. 相关资源及概述

  • Composer官网 https://getcomposer.org

  • Composer Github 地址 https://github.com/composer/composer

  • Composer中国镜像 http://www.phpcomposer.com

  • 阿里云全量镜像(👍 推荐):https://developer.aliyun.com/composer

  • Packagist

    官网:https://packagist.org

    它是 Composer 主要的一个包信息存储库,包开发者将具体代码托管到 Github 上,将包信息提交到 Packagist 上,这样使用者就可以通过 Composer 去使用。它的执行顺序如下:

    • 首先,Composer 根据本地定义的 composer.json 信息去查询 Packagist;
    • 其次,Packagist 根据 composer.json/package.json 信息解析,最终对应到Github 仓库;
    • 最后,Composer 基于 Github 仓库上的 composer.json 下载代码到本地。
  • composer.json

    这是 Composer 的核心,主要用来配置 Composer 的执行规则。

  • 自动加载

    Composer 基于 PHP 命名空间和 PSR-4 标准开发、集成了一个自动加载器。

阅读全文 »

1. 所有可用命令

which php
/usr/bin/php
➜ php -h
Usage: php [options] [-f] <file> [--] [args...]
php [options] -r <code> [--] [args...]
php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
php [options] -S <addr>:<port> [-t docroot]
php [options] -- [args...]
php [options] -a

-a 以交互式shell模式运行
-c <path>|<file> 在此目录中查找php.ini文件
-n 指定不使用php.ini文件
-d foo[=bar] 定义一个INI实体,key为foo,value为'bar'
-e 为调试和分析生成扩展信息
-f <file> 解释和执行文件
-h 打印当前帮助信息
-i 显示PHP的基本信息
-l 进行语法检查 (lint)
-m 显示编译到内核的模块
-r <code> 运行PHP代码,不需要使用标签 <?..?>
-B <begin_code> 在处理输入之前先执行PHP代码
-R <code> 对输入的每一行作为PHP代码运行
-F <file> 解释执行文件 <file> 中的代码
-E <end_code> 在处理输入之后执行PHP代码
-H 从外部工具隐藏传递过的参数
-S <addr>:<port> 运行内建的web服务器
-t <docroot> 指定用于内建web服务器的文档根目录
-s 输出HTML语法高亮的源码
-v 输出PHP的版本号
-w 输出去掉注释和空格的源码
-z <file> 载入Zend扩展文件

args... 传递给要运行的脚本的参数。当第一个参数以-开始或者是脚本是从标准输入读取的时候,使用--参数

--ini 显示PHP的配置文件名

--rf <name> 显示关于函数 <name> 的信息
--rc <name> 显示关于类 <name> 的信息
--re <name> 显示关于扩展 <name> 的信息
--rz <name> 显示关于Zend扩展 <name> 的信息
--ri <name> 显示扩展 <name> 的配置信息
阅读全文 »

1. Vagrant 介绍

相关资源

下面是节选自官方对 Vagrant 的说明:

WHY VAGRANT?

Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

To achieve its magic, Vagrant stands on the
oulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.

其实,说白了 Vagrant 就是一个普普通通的装了 Linux 的 VirtualBox 虚拟机,配以 Vagrant 团队为之开发的一系列套件,辅助完成诸如安装初始化、文件同步、ssh、部署环境升级、功能插件安装等等一些列问题的开发环境部署套件。

参见知乎话题:Vagrant 和 Docker的使用场景和区别?

解决的痛点

  • 开发环境快速部署
  • 开发环境更迭
阅读全文 »

版本:v5.1.x LTS

v6.0 稳定版已经发布,详见官网:ThinkPHP 6.0

这里以单入口为例解析 ThinkPHP 从接收前端请求到返回数据的整个执行流程,分为如下图的几个步骤:

ThinkPHP 框架执行流程浅析

其中入口文件位置:public/index.php

阅读全文 »