2018年7月

首先呢,一般的框架都会通过某种机制自动解析namespace,比如Yii里,最底层的namespaceapp,所有的Class都是在这个app之下的。

或者,Laravel框架里,什么都是在Illuminate这个namespace之下。

那么,如果想手动添加属于自己的namespace怎么办?

比如我写了一个库,我想把这个库的namespace命名为SuperPHP,咋办?
也不难,composer.json这个文件里有一个autoload,可以用来创建自己的namespace并且自动加载到整个框架里,使得任何地方都可以使用到你自己写的库。

{
    "autoload": {
        "psr-4": {
            "MyNamespce\\": "dirPath/"
        }
    }
}

注意,大小写是区分的,并且psr-4里边,keynamespacevalue文件路径

最后,用一个命令重新生成新的自动加载文件(autoloader files):

composer dump-autoload --optimize

摘抄自composer的文档:

--optimize (-o): Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run so it is currently not done by default.

2018年7月7日更新
autoload里还有一个东西,就是files,目的是在每一个request的时候都加载该文件,一般用于加载一些Helpers函数。

 "files": [
            "src/Helpers.php"
        ]

2018年11月19日更新

{
    "autoload": {
        "classmap": ["src/", "lib/", "Something.php"]
    }
}

每次更新这个classmap这个,都要重新生成新的自动加载文件(autoloader files):

composer dump-autoload --optimize

一般如果做Google Adsense,需要验证网站,那么一般是在HTML代码里加Meta标签,或者在根目录下,加一个html文件验证。

验证的时候,要放在root directory,啥意思呢?比如,Laravel框架,要放在public里,Yii2框架要放在web里。

总之,是index.php所在的目录。

验证完毕后,这个html文件不要删了,因为Google还会时不时回头再查看一下。否则没有的话,就会导致网站重新回到未验证状态。