composer
一个php的包管理的,很近似于npm, 他也是默认不全局的,只是配置某个工程,然后通过json文件自动下载依赖
composer.lock
是个特殊的文件,记录了创建时各个package的版本,这样下次install的时候保证版本严格一致
autoload
这个脚本会自动load相应依赖,所以在工程中只要require了这个,那么这些package可以直接拿来使用
require可以返回一个instance,可以后期add package
$loader = require __DIR__ . '/vendor/autoload.php';
$loader->add('Acme\\Test\\', __DIR__);
You can even add your own code to the autoloader by adding an autoload field to composer.json.
{
"autoload": {
"psr-4": {"Acme\\": "src/"}
}
}
create a library
As soon as you have a composer.json in a directory, that directory is a package. When you add a require to a project, you are making a package that depends on other packages. The only difference between your project and libraries is that your project is a package without a name.
Tip
函数内的变量是不受{}scope控制的。类似于js
PHP接受显式的函数参数类型指派,我比较倾向于显示的指出
php namespace是在一个作用域里,如果在另外的引用文件里已经包含了对应的引用文件,本文件中不用再引用一次
mysql connection不用主动释放,执行结束会自动释放
pfsockopen 可以打开一个持久的sock connection
set_include_path & get_include_path
set_include_path
用于限定include或者require文件的范围,并且使得代码里不必要写一个完整的路径,如果不调用这个方法,那么你可以以相对或者绝对路径的方式访问任何地方,但是如果有了这个只能在他限定的范围内查找
Magic Func
__call() 访问类中不存在的对象会调到
invoke() 以类名执行类似python的__call
get(), set()
Reflection
get_class_name()
get_class_method()