composer 應用

Namespace

1.非限定名稱或不包含前綴的類名稱.
如 $a = new foo();
若是當前命名空間是 app,則 foo 爲appfoo
若是當前沒有命名空間,代碼是全局的.則 foo 被解析爲全局 foophp

2.限定名稱或包含前綴的名稱.
如 $a = new userfoo();
若是當前命名空間爲 app,則 foo 被解析爲 appuserfoo();
若是使用 foo 的代碼是全局的,不包含在任何命名空間中的代碼,foo 會被解析爲 userfoo。redis

3.徹底限定名稱
如 $a = new userfoo();
在這種狀況下,foo 就是 userfoo();json

訪問任意全局類、函數或常量,均可以使用徹底限定名稱,例如 strlen() 或 Exception 或 INI_ALL。app

composer

1.classmap
命名空間和文件路徑的映射composer

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

它會掃描指定目錄下以. php 或. inc 結尾的文件中的 class,生成 class 到指定 file path 的映射.
並加入新生成的 vendor/composer/autoload_classmap.php 文件中函數

<?php
return [
  'App\\Console\\Kernel' => $baseDir . '/app/Console/Kernel.php'
];
?>

2.filesui

{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

用於全局性的helper 目錄下函數
它會生成一個 array,包含這些配置中指定的 files,再寫入新生成的 vendor/composer/autoload_files.php 文件中,以供 autoloader 直接進行加載spa

3.psr-4code

"autoload": {
        "psr-4": {
            "App\\": "app/"
        }
    }

key 和 value 就定義出了 namespace 以及到相應 path 的映射
註冊命名空間到對應的路徑下的 src 目錄下,不指向 src 也能夠.
而後根據命名空間去目錄下尋找文件.
$a = new AppFoo();
會去 app目錄下找 foo.php 文件blog

加入後執行 composer install 或 composer dump-autoload

項目實踐

1.項目目錄

clipboard.png

2.composer.json

{
  "require": {
    "predis/predis": "1.1.0"
  },
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Third\\":"third/"
    },
    "files":[
      "helper/constants.php",
      "helper/funs.php"
    ]
  }
}

執行 composer install 或 composer dumpautoload
會在vendor/composer 裏對應的加載方式文件中生成映射

psr-4

return array(
    'Third\\' => array($baseDir . '/third'),
    'Predis\\' => array($vendorDir . '/predis/predis/src'),
    'App\\' => array($baseDir . '/app'),
);

files

return array(
    'da551be15a8db089a9deb0b11a4f158d' => $baseDir . '/helper/constants.php',
    'cebcf5f3197b00af0a0ca1ae69808ce5' => $baseDir . '/helper/funs.php',
);

使用,在 index.php 中

require dirname(__FILE__)."/vendor/autoload.php";

echo Predis\Client::VERSION;
$app = new App\Pay();
$app->index();
相關文章
相關標籤/搜索