Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
是
2016/09/22
主 'Shengyou'Fan
PHP' 'Day'#28
Composer 是PHP Day #28
好
https://youtu.be/1cABv5Ou0oE
http://www.slideshare.net/shengyou/
composerJfromscratch
https://gith...
Composer 是PHP Day #28
{'
''''"name":'"shengyou/self>introduction",'
''''"description":'" 還增",'
''''"authors":'['
''''''''{...
Composer 是PHP Day #28
只
•
• Composer
• Composer
• Composer 啊
• 不
•
很
Composer 是PHP Day #28
PHP
三只
HTTP
⾝身
要成會
index.php
posts.php
inc/
libs/
出 ⼼心 再
多
A
B
classes/
bootstrap.php
那 URL
php 再
Composer 是PHP Day #28
include 實
//' 'lib1' 'Class'
include'__DIR__'.'"/libs/lib1/Class.php";'
//'lib1' 那 'lib2' 'lib3'
inc...
Composer 是PHP Day #28
多 new 多 ⾯面
//' 'Class'
$class'='new'MyClass();'
//' 'Class' 然'
PHP'Fatal'error:''Class''MyClass''not...
Composer 是PHP Day #28
那 都
libs/
A
B
C
E E
話情
D D
道
A
v.2v.1
Composer 是PHP Day #28
Composer
• 點
• 嗎 那都
• 第
• 於最
•
Composer
因 ⼒力 情
Composer 是PHP Day #28
composer.phar
再
+ +
git
果
php 5.3.2
(openssl extension)
Composer 是PHP Day #28
*nix 發
php'>r'"copy('https://getcomposer.org/installer',''composer>setup.php');"'
php'>r'"..."'
php'...
Composer 是PHP Day #28
Windows 發
• 中 Composer 起 for Windows
• 那 起 看 能同看
Composer 那 PHP網 起 php.exe
道網 PHP 道 起 ⼼心
https://get...
Composer 是PHP Day #28
wagon 已
• wagon Laravel 享 PHP/Laravel 發
網 去 Cmder因Composer因git
AMP網 wagon網家 wagon Cmder
已 Composer
P...
Composer 是PHP Day #28
再
• Composer PHAR 再 (PHP archive)網
感 PHP Runtime 有 ( )
• composer.phar 道 成會 網
想學 與
$'php'composer.ph...
Composer 是PHP Day #28
• 想學著增 網 想學與
$'[php]'composer[.phar]'[>>version]
Composer 是PHP Day #28
Composer
• 上 Composer網 bug-
fix
$'[php]'composer[.phar]'self>update
Composer 是PHP Day #28
PHP
• HTTP PHP CLI PHP
個 CLI PHP 個 CLI PHP 定
$'php'>v $'php'>r'"echo'PHP_BINARY;"
Composer 是PHP Day #28
次 extension
• HTTP CLI php.ini
個 CLI PHP
php.ini ⼼心
$'php'>>ini
個 CLI extension
$'php'>m
Composer 是PHP Day #28
XDebug 今下
• Composer XDebug
alias 過 XDebug
alias'composer='php'>n'/usr/local/bin/composer'
⽣生 網 都 做 ...
Composer
Composer 啊 ⼼心
Composer 是PHP Day #28
Composer
• 為 成會
• Composer
$'cd'~/Code/{MyProject}
$'composer'init
(那 給 'composer.json)
Composer 是PHP Day #28
{'
''''"name":'"{vendor/package}",'
''''"type":'"project",'
''''"license":'"proprietary",'
''''"auth...
Composer 是PHP Day #28
時⼈人
• PHP 都 與Packagist.org
• PHP ⽤用 網 ⾃自
說 因 那
/ 說
P.S Composer Packagist
Composer 是PHP Day #28
$'composer'require'{vendor}/{project}'
$'composer'install
Composer 是PHP Day #28
$'composer'update
Composer 是PHP Day #28
⼼心
<?php'
require'__DIR__.'/vendor/autoload.php';
多 'require
Composer 是PHP Day #28
多 網 …
Composer 是PHP Day #28
新
X Y Z
Major
Breaks
Minor
Features
Patch
Fixes
. .
Composer 是PHP Day #28
0.1.0 0.2.0 1.0.1 1.1.0
0.1.1 1.0.0 1.0.2 2.0.0
'
享
享 '
'
'
享
'
'
'
'
Composer 是PHP Day #28
Version Constraints
Exact Match 1.2.3 1.2.3
Wildcard Range 1.0.* >=1.0 <1.1
Hyphen Range 1.0 - 2.0 >...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
Composer 是PHP Day #28
所多 得
• 網 composer'require
• 樣 composer.json 網
composer'validate
• 情這 網太 ⽂文 dev-master 的
* ( 全 在 裡 Pa...
Composer 是PHP Day #28
json 再 lock 再!?
年 commit VCS
Composer 是PHP Day #28
• composer.json
- 那 ⼼心
• composer.lock
- 知
• vendor
- 起
Composer 是PHP Day #28
(lock'再 )
After'installing'the'dependencies,'Composer'writes'
the'list'of'the'exact'versions'it'inst...
Composer 是PHP Day #28
VCS
update install
jsonV.S lock
Composer 是PHP Day #28
/vendor'
/node_modules'
composer.phar
.gitignore
(Jordi' '
lock'再 果 )
Composer 是PHP Day #28
install 的 update
想學 歡 網 …
Composer 是PHP Day #28
1. 'composer.lock' 太最 '
2. 最 網 'composer'update' '
3. 最 網那 'lock' 'package'
$'[php]'composer[.phar]'...
Composer 是PHP Day #28
1. 'composer.json'再'
2. ⼼心 網作 ''
3. 作 'packages'
4. 'composer.lock
$'[php]'composer[.phar]'update
Composer 是PHP Day #28
• $'composer'install
- (git'clone) 網
那
• $'composer'update
- composer.json
-
( composer.lock 再)
( 那快...
不
多 起
Composer 是PHP Day #28
能⾏行
• 能⾏行 與
- 錯 (recca0120/laravel>tracy)
- 發 (vlucas/phpdotenv)
- 說對 都 (robmorgan/phinx)
- 可說對 (fza...
Composer 是PHP Day #28
錯
$'composer'require'recca0120/laravel>tracy
• 起 給
• 起 多 等如 網 全 ⽅方 好
• print_r()因var_dump() 發 ⼦子
• 說...
Composer 是PHP Day #28
use'Recca0120LaravelTracyTracy;'
Tracy::instance();'
//'sql'log'helper'
function'sql($sql)'{'
' $tra...
Composer 是PHP Day #28
發
$'composer'require'vlucas/phpdotenv
• 說 多 起
• 都 不 網 說
都 都
• 起 網 ⼼心 說
Composer 是PHP Day #28
//'bootstrap.php'
use'DotenvDotenv;'
$dotenv'='new'Dotenv(__DIR__);'
$dotenv>>load();'
include'__DIR...
Composer 是PHP Day #28
說對 都
$'composer'require'robmorgan/phinx
• 起 都 網 說對
• 網 說對
• 看 說對 本
• 說對 也也
Composer 是PHP Day #28
//'init'phinx'
$'vendor/bin/phinx'init'.'
//'edit'phinx.yml'
environments:'
''''development:'
''''''...
Composer 是PHP Day #28
//'create'migration'class'
$'vendor/bin/phinx'create'CreatePostsTable'
//'write'migration'script'
$t...
Composer 是PHP Day #28
//'create'seeder'class'
$'vendor/bin/phinx'seed:create'PostSeeder'
//'truncate'table'first'
$this>>e...
Composer 是PHP Day #28
可說對
$'composer'require'fzaninotto/faker
• 多 說對 起 網每 說對
aaa因xxx因asdf 我 說對
• 剛 因 無 說對
• 網 可 說對
Composer 是PHP Day #28
use'FakerFactory'as'Faker;'
//'init'faker'
$faker'='Faker::create('zh_TW');'
//'generate'seeding'dat...
Composer 是PHP Day #28
$'composer'require'nesbot/carbon
• date() 不著 去
•
• 真真
• 新
Composer 是PHP Day #28
use'CarbonCarbon;'
//'generate'seeding'data'
$data[]'='['
' 'title'''''''=>'$faker>>realText(10),'
'...
Composer 是PHP Day #28
{'
''''"autoload":'{'
''''''''"psr>4":'{...},'
''''''''"classmap":'[...],'
''''''''"files":'[...]'
'...
Composer 是PHP Day #28
psr>4
{'
''''"autoload":'{'
''''''''"psr>4":'{'
''''''''''''"App":'"app/"'
''''''''}'
''''}'
}
$'com...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
app/
autoload.php
MyAwesomeClass.php
<?php'
namespace'...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
app/
autoload.php
MyAwesomeClass.php
<?php'
require'__...
Composer 是PHP Day #28
classmap
{'
''''"autoload":'{'
''''''''"classmap":'['
'''''''''''"libs"'
'''''''']'
''''}'
}
$'compo...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
libs/
autoload.php
my>old>school>class.php
<?php'
clas...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
libs/
autoload.php
my>old>school>class.php
<?php'
requ...
Composer 是PHP Day #28
files
{'
''''"autoload":'{'
''''''''"files":'{'
''''''''''''"helpers/my>functions.php"'
''''''''},'
...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
helpers/
autoload.php
my>functions.php
<?php'
if'(!'fu...
Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
helpers/
autoload.php
my>functions.php
<?php'
require'...
Composer 是PHP Day #28
• 那 Composer
• Composer
• 不
•
• 很
Legacy 開
⽇日 和和
http://www.theqwan.com/contact
覺 JetBrains 麼才
更 回網 PhpStrom ⼀一
更 很
Laravel
http://www.laravel-dojo.com
事 PHP/Laravel ⼀一 更
Composer 是PHP Day #28
動 Composer 想到
PHP
Composer
https://goo.gl/OfJK3C
⽇日 email網
PHPConf Taiwan 2016
PHP 間 網 2016/10/29 現們
Composer 是PHP Day #28
Q & A
您 ⽇日就
Composer 從入門到實戰
Prochain SlideShare
Chargement dans…5
×

Composer 從入門到實戰

隨著近年來 PHP 社群的浪潮,Composer 目前已經是 PHP 開發者管理套件相依的標準配備。雖然 Composer 提供了許多在開發上很實用的功能,不過實務上卻常常只被用於安裝框架的啟始包,甚為可惜。因此在這場分享裡,聖佑將會從 Composer 的基本功能開始介紹,逐步說明如何在專案中導入 Composer 以及數個好用套件介紹,並實戰三大自動載入機制,期能讓大家對 Composer 有較為全面的認識。

講者:范聖佑 (Shengyou Fan)
現職為得寬科技研究員、Laravel 傳教士。於三年前於 Facebook 上成立 Laravel 台灣 社團,並同時成立 Laravel 道場 學習資源網站與多間學校、企業合作舉辦教育訓練工作坊,從此踏上 Laravel 傳教與導入之路。除此之外也在 Github 上發佈數項與 Laravel 開發相關的懶人包與外掛,每個月固定舉辦三場 PHP/Laravel 活動,以實現簡潔優雅開發為夢想。持續關注創新應用、網路技術、印刷出版及甜點烘焙等領域。 目前抱著甜點書持續 Full Stack 的旅程!

講座說明與紀錄:https://medium.com/@shengyou/php-%E4%B9%9F%E6%9C%89-day-28-composer-%E5%BE%9E%E5%85%A5%E9%96%80%E5%88%B0%E5%AF%A6%E6%88%B0-4d3b34a91946#.e4u3uw6zv
範例程式碼:https://github.com/laravel-dojo/20160922-php-the-day-demo
簡報錄影:http://youtu.be/1cABv5Ou0oE
個人網站:http://www.shengyoufan.com/

  • Identifiez-vous pour voir les commentaires

Composer 從入門到實戰

  1. 1. 是 2016/09/22 主 'Shengyou'Fan PHP' 'Day'#28
  2. 2. Composer 是PHP Day #28 好 https://youtu.be/1cABv5Ou0oE http://www.slideshare.net/shengyou/ composerJfromscratch https://github.com/laravelJdojo/ 20160922JphpJtheJdayJdemo
  3. 3. Composer 是PHP Day #28 {' ''''"name":'"shengyou/self>introduction",' ''''"description":'" 還增",' ''''"authors":'[' ''''''''{' ''''''''''''"name":'"主 '(Shengyou'Fan)",' ''''''''''''"email":'"shengyoufan@gmail.com",' ''''''''''''"homepage":'"http://www.shengyoufan.com",' ''''''''''''"company":'" 覺 '(The'Qwan)",' ''''''''''''"role":'[" 兩 ",'"Laravel' ⼀一以"]' ''''''''}' ''''],' ''''"support":'{' ''''''''"facebook":'"http://fb.me/shengyoufan",' ''''''''"twitter":'"@shengyou"' ''''}' }
  4. 4. Composer 是PHP Day #28 只 • • Composer • Composer • Composer 啊 • 不 •
  5. 5.
  6. 6. Composer 是PHP Day #28 PHP 三只 HTTP ⾝身 要成會 index.php posts.php inc/ libs/ 出 ⼼心 再 多 A B classes/ bootstrap.php 那 URL php 再
  7. 7. Composer 是PHP Day #28 include 實 //' 'lib1' 'Class' include'__DIR__'.'"/libs/lib1/Class.php";' //'lib1' 那 'lib2' 'lib3' include'__DIR__'.'"/libs/lib2/Class.php";' include'__DIR__'.'"/libs/lib3/Class.php";' //'lib2' 那 'lib4' include'__DIR__'.'"/libs/lib4/Class.php";' //'lib3' 那 'lib999' include'__DIR__'.'"/libs/lib999/Class.php";
  8. 8. Composer 是PHP Day #28 多 new 多 ⾯面 //' 'Class' $class'='new'MyClass();' //' 'Class' 然' PHP'Fatal'error:''Class''MyClass''not'found' in'scripts.php'on'line'x
  9. 9. Composer 是PHP Day #28 那 都 libs/ A B C E E 話情 D D 道 A v.2v.1
  10. 10. Composer 是PHP Day #28 Composer • 點 • 嗎 那都 • 第 • 於最 •
  11. 11. Composer 因 ⼒力 情
  12. 12. Composer 是PHP Day #28 composer.phar 再 + + git 果 php 5.3.2 (openssl extension)
  13. 13. Composer 是PHP Day #28 *nix 發 php'>r'"copy('https://getcomposer.org/installer',''composer>setup.php');"' php'>r'"..."' php'composer>setup.php' php'>r'"unlink('composer>setup.php');" installer' 不 發 太 'Composer' 樣 能 樣 網 'composer.phar' 會 mv'composer.phar'/usr/local/bin/composer 'composer' 不 想學 https://getcomposer.org/download/'
  14. 14. Composer 是PHP Day #28 Windows 發 • 中 Composer 起 for Windows • 那 起 看 能同看 Composer 那 PHP網 起 php.exe 道網 PHP 道 起 ⼼心 https://getcomposer.org/Composer>Setup.exe
  15. 15. Composer 是PHP Day #28 wagon 已 • wagon Laravel 享 PHP/Laravel 發 網 去 Cmder因Composer因git AMP網 wagon網家 wagon Cmder 已 Composer P.S'wagon' 去 'cmder'發 中 'Composer'發 不 網 今 不 ⼼心 http://www.laravel>dojo.com/opensource/wagon Laravel wagon與
  16. 16. Composer 是PHP Day #28 再 • Composer PHAR 再 (PHP archive)網 感 PHP Runtime 有 ( ) • composer.phar 道 成會 網 想學 與 $'php'composer.phar'[command]
  17. 17. Composer 是PHP Day #28 • 想學著增 網 想學與 $'[php]'composer[.phar]'[>>version]
  18. 18. Composer 是PHP Day #28 Composer • 上 Composer網 bug- fix $'[php]'composer[.phar]'self>update
  19. 19. Composer 是PHP Day #28 PHP • HTTP PHP CLI PHP 個 CLI PHP 個 CLI PHP 定 $'php'>v $'php'>r'"echo'PHP_BINARY;"
  20. 20. Composer 是PHP Day #28 次 extension • HTTP CLI php.ini 個 CLI PHP php.ini ⼼心 $'php'>>ini 個 CLI extension $'php'>m
  21. 21. Composer 是PHP Day #28 XDebug 今下 • Composer XDebug alias 過 XDebug alias'composer='php'>n'/usr/local/bin/composer' ⽣生 網 都 做 ^.<
  22. 22. Composer Composer 啊 ⼼心
  23. 23. Composer 是PHP Day #28 Composer • 為 成會 • Composer $'cd'~/Code/{MyProject} $'composer'init (那 給 'composer.json)
  24. 24. Composer 是PHP Day #28 {' ''''"name":'"{vendor/package}",' ''''"type":'"project",' ''''"license":'"proprietary",' ''''"authors":'[' ''''''''{' ''''''''''''"name":'"{author'name}",' ''''''''''''"email":'"{author'email}"' ''''''''}' ''''],' ''''"minimum>stability":'"stable",' ''''"require":'{' ''''''''"{vendor/package}":'"{version}"' ''''},' ''''"autoload":'{}' } Composer ⼼心 再
  25. 25. Composer 是PHP Day #28 時⼈人 • PHP 都 與Packagist.org • PHP ⽤用 網 ⾃自 說 因 那 / 說 P.S Composer Packagist
  26. 26. Composer 是PHP Day #28 $'composer'require'{vendor}/{project}' $'composer'install
  27. 27. Composer 是PHP Day #28 $'composer'update
  28. 28. Composer 是PHP Day #28 ⼼心 <?php' require'__DIR__.'/vendor/autoload.php'; 多 'require
  29. 29. Composer 是PHP Day #28 多 網 …
  30. 30. Composer 是PHP Day #28 新 X Y Z Major Breaks Minor Features Patch Fixes . .
  31. 31. Composer 是PHP Day #28 0.1.0 0.2.0 1.0.1 1.1.0 0.1.1 1.0.0 1.0.2 2.0.0 ' 享 享 ' ' ' 享 ' ' ' '
  32. 32. Composer 是PHP Day #28 Version Constraints Exact Match 1.2.3 1.2.3 Wildcard Range 1.0.* >=1.0 <1.1 Hyphen Range 1.0 - 2.0 >=1.0.0 <2.1 Tilde Operator ~1.2 >=1.2 <2.0 Caret Operator ^1.2.3 ^0.3 >=1.2.3 <2.0 >=0.3.0 <0.4.0 Stability Flags @stable @dev dev > alpha > beta > RC > stable ⼼心種 stable網 @ 想
  33. 33. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^與 ^嗎 Composer 網 上 中 Copmposer
  34. 34. Composer 是PHP Day #28 所多 得 • 網 composer'require • 樣 composer.json 網 composer'validate • 情這 網太 ⽂文 dev-master 的 * ( 全 在 裡 Packagist ) • ⼿手 把 SemVer ⾏行 ( 享 很 把 ) • 樣 所多 樂 網 中 Packagist Semver Checker 多
  35. 35. Composer 是PHP Day #28 json 再 lock 再!? 年 commit VCS
  36. 36. Composer 是PHP Day #28 • composer.json - 那 ⼼心 • composer.lock - 知 • vendor - 起
  37. 37. Composer 是PHP Day #28 (lock'再 ) After'installing'the'dependencies,'Composer'writes' the'list'of'the'exact'versions'it'installed'into'a' composer.lock'file. This'locks'the'project'to'those'specific'versions.
  38. 38. Composer 是PHP Day #28 VCS update install jsonV.S lock
  39. 39. Composer 是PHP Day #28 /vendor' /node_modules' composer.phar .gitignore
  40. 40. (Jordi' ' lock'再 果 )
  41. 41. Composer 是PHP Day #28 install 的 update 想學 歡 網 …
  42. 42. Composer 是PHP Day #28 1. 'composer.lock' 太最 ' 2. 最 網 'composer'update' ' 3. 最 網那 'lock' 'package' $'[php]'composer[.phar]'install
  43. 43. Composer 是PHP Day #28 1. 'composer.json'再' 2. ⼼心 網作 '' 3. 作 'packages' 4. 'composer.lock $'[php]'composer[.phar]'update
  44. 44. Composer 是PHP Day #28 • $'composer'install - (git'clone) 網 那 • $'composer'update - composer.json - ( composer.lock 再) ( 那快沒後第 )
  45. 45. 不 多 起
  46. 46. Composer 是PHP Day #28 能⾏行 • 能⾏行 與 - 錯 (recca0120/laravel>tracy) - 發 (vlucas/phpdotenv) - 說對 都 (robmorgan/phinx) - 可說對 (fzaninotto/faker) - (nesbot/carbon)
  47. 47. Composer 是PHP Day #28 錯 $'composer'require'recca0120/laravel>tracy • 起 給 • 起 多 等如 網 全 ⽅方 好 • print_r()因var_dump() 發 ⼦子 • 說對 sql 新 情
  48. 48. Composer 是PHP Day #28 use'Recca0120LaravelTracyTracy;' Tracy::instance();' //'sql'log'helper' function'sql($sql)'{' ' $tracy'='Tracy::instance();' ' $databasePanel'='$tracy>>getPanel('database');' ' $databasePanel>>logQuery($sql);' }
  49. 49. Composer 是PHP Day #28 發 $'composer'require'vlucas/phpdotenv • 說 多 起 • 都 不 網 說 都 都 • 起 網 ⼼心 說
  50. 50. Composer 是PHP Day #28 //'bootstrap.php' use'DotenvDotenv;' $dotenv'='new'Dotenv(__DIR__);' $dotenv>>load();' include'__DIR__.'/inc/database.php';' //'inc/database.php' define('DB_HOST','getenv('DB_HOST'));' define('DB_PORT','getenv('DB_PORT'));' //'...
  51. 51. Composer 是PHP Day #28 說對 都 $'composer'require'robmorgan/phinx • 起 都 網 說對 • 網 說對 • 看 說對 本 • 說對 也也
  52. 52. Composer 是PHP Day #28 //'init'phinx' $'vendor/bin/phinx'init'.' //'edit'phinx.yml' environments:' ''''development:' ''''''''adapter:'mysql' ''''''''host:'127.0.0.1' ''''''''//'...' //'create'folders' $'mkdir'>p'db/migrations'db/seeds
  53. 53. Composer 是PHP Day #28 //'create'migration'class' $'vendor/bin/phinx'create'CreatePostsTable' //'write'migration'script' $table'='$this>>table('posts');' $table>>addColumn('title',''string')' ' >>addColumn('content',''text')' ' >>addColumn('created_at',''timestamp')' ' >>addColumn('updated_at',''timestamp')' ' >>create();' //'run'migrate' $'vendor/bin/phinx'migrate
  54. 54. Composer 是PHP Day #28 //'create'seeder'class' $'vendor/bin/phinx'seed:create'PostSeeder' //'truncate'table'first' $this>>execute('TRUNCATE'TABLE'posts');' //'generate'seeding'data' $data'='[...];' $posts'='$this>>table('posts');' $posts>>insert($data)' ' >>save();' //'run'seeding' $'vendor/bin/phinx'seed:run
  55. 55. Composer 是PHP Day #28 可說對 $'composer'require'fzaninotto/faker • 多 說對 起 網每 說對 aaa因xxx因asdf 我 說對 • 剛 因 無 說對 • 網 可 說對
  56. 56. Composer 是PHP Day #28 use'FakerFactory'as'Faker;' //'init'faker' $faker'='Faker::create('zh_TW');' //'generate'seeding'data' $data[]'='[' ' 'title''''=>'$faker>>realText(10),' ' 'content''=>'$faker>>realText(500),' ];
  57. 57. Composer 是PHP Day #28 $'composer'require'nesbot/carbon • date() 不著 去 • • 真真 • 新
  58. 58. Composer 是PHP Day #28 use'CarbonCarbon;' //'generate'seeding'data' $data[]'='[' ' 'title'''''''=>'$faker>>realText(10),' ' 'content'''''=>'$faker>>realText(500),' ' 'created_at''=>'Carbon::now()' ' ' ' ' ' ' >>subDays($total'>'$index),' ' 'updated_at''=>'Carbon::now()' ' ' ' ' ' ' >>subDays($total'>'$index)' ' ' ' ' ' ' >>addHours(rand(1,'24)),' ];
  59. 59. Composer 是PHP Day #28 {' ''''"autoload":'{' ''''''''"psr>4":'{...},' ''''''''"classmap":'[...],' ''''''''"files":'[...]' ''''},' ''''"autoload>dev":'{' ''''''''"psr>4":'{...},' ''''''''"classmap":'[...],' ''''''''"files":'[...]' ''''},' } $'vim'composer.json
  60. 60. Composer 是PHP Day #28 psr>4 {' ''''"autoload":'{' ''''''''"psr>4":'{' ''''''''''''"App":'"app/"' ''''''''}' ''''}' } $'composer'dump>autoload
  61. 61. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ app/ autoload.php MyAwesomeClass.php <?php' namespace'App;' class'MyAwesomeClass'extends'SuperPower' {' ''''//'...' }
  62. 62. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ app/ autoload.php MyAwesomeClass.php <?php' require'__DIR__.'/vendor/autoload.php';' use'AppMyAwesomeClass;' $awesomeness'='new'MyAwesomeClass();' ?>
  63. 63. Composer 是PHP Day #28 classmap {' ''''"autoload":'{' ''''''''"classmap":'[' '''''''''''"libs"' '''''''']' ''''}' } $'composer'dump>autoload
  64. 64. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ libs/ autoload.php my>old>school>class.php <?php' class'my_old_school_class' {' ''''//'...' }
  65. 65. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ libs/ autoload.php my>old>school>class.php <?php' require'__DIR__.'/vendor/autoload.php';' $oldschool'='new'my_old_school_class();' ?>
  66. 66. Composer 是PHP Day #28 files {' ''''"autoload":'{' ''''''''"files":'{' ''''''''''''"helpers/my>functions.php"' ''''''''},' ''''}' } $'composer'dump>autoload
  67. 67. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ helpers/ autoload.php my>functions.php <?php' if'(!'function_exists('super_power'))'{' ''''function'super_power()'{' ''''''''//...' ''''}' }
  68. 68. Composer 是PHP Day #28 index.php composer.lock composer.json vendor/ helpers/ autoload.php my>functions.php <?php' require'__DIR__.'/vendor/autoload.php';' ?>' <!>>'...'>>>' ''''<h1><?='super_power()'?></h1>' <!>>'...'>>>
  69. 69. Composer 是PHP Day #28 • 那 Composer • Composer • 不 • • 很
  70. 70. Legacy 開 ⽇日 和和 http://www.theqwan.com/contact
  71. 71. 覺 JetBrains 麼才 更 回網 PhpStrom ⼀一 更 很
  72. 72. Laravel http://www.laravel-dojo.com 事 PHP/Laravel ⼀一 更
  73. 73. Composer 是PHP Day #28 動 Composer 想到 PHP Composer https://goo.gl/OfJK3C ⽇日 email網
  74. 74. PHPConf Taiwan 2016 PHP 間 網 2016/10/29 現們
  75. 75. Composer 是PHP Day #28 Q & A 您 ⽇日就

×