Mais conteúdo relacionado
Semelhante a Composer 從入門到實戰 (20)
Mais de Shengyou Fan (20)
Composer 從入門到實戰
- 2. Composer 是PHP Day #28
好
https://youtu.be/1cABv5Ou0oE
http://www.slideshare.net/shengyou/
composerJfromscratch
https://github.com/laravelJdojo/
20160922JphpJtheJdayJdemo
- 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"'
''''}'
}
- 6. Composer 是PHP Day #28
PHP
三只
HTTP
⾝身
要成會
index.php
posts.php
inc/
libs/
出 ⼼心 再
多
A
B
classes/
bootstrap.php
那 URL
php 再
- 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. Composer 是PHP Day #28
多 new 多 ⾯面
//' 'Class'
$class'='new'MyClass();'
//' 'Class' 然'
PHP'Fatal'error:''Class''MyClass''not'found'
in'scripts.php'on'line'x
- 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. Composer 是PHP Day #28
Windows 發
• 中 Composer 起 for Windows
• 那 起 看 能同看
Composer 那 PHP網 起 php.exe
道網 PHP 道 起 ⼼心
https://getcomposer.org/Composer>Setup.exe
- 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. Composer 是PHP Day #28
再
• Composer PHAR 再 (PHP archive)網
感 PHP Runtime 有 ( )
• composer.phar 道 成會 網
想學 與
$'php'composer.phar'[command]
- 18. Composer 是PHP Day #28
Composer
• 上 Composer網 bug-
fix
$'[php]'composer[.phar]'self>update
- 19. Composer 是PHP Day #28
PHP
• HTTP PHP CLI PHP
個 CLI PHP 個 CLI PHP 定
$'php'>v $'php'>r'"echo'PHP_BINARY;"
- 20. Composer 是PHP Day #28
次 extension
• HTTP CLI php.ini
個 CLI PHP
php.ini ⼼心
$'php'>>ini
個 CLI extension
$'php'>m
- 21. Composer 是PHP Day #28
XDebug 今下
• Composer XDebug
alias 過 XDebug
alias'composer='php'>n'/usr/local/bin/composer'
⽣生 網 都 做 ^.<
- 23. Composer 是PHP Day #28
Composer
• 為 成會
• Composer
$'cd'~/Code/{MyProject}
$'composer'init
(那 給 'composer.json)
- 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. Composer 是PHP Day #28
時⼈人
• PHP 都 與Packagist.org
• PHP ⽤用 網 ⾃自
說 因 那
/ 說
P.S Composer Packagist
- 28. Composer 是PHP Day #28
⼼心
<?php'
require'__DIR__.'/vendor/autoload.php';
多 'require
- 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. 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網 @ 想
- 34. Composer 是PHP Day #28
所多 得
• 網 composer'require
• 樣 composer.json 網
composer'validate
• 情這 網太 ⽂文 dev-master 的
* ( 全 在 裡 Packagist )
• ⼿手 把 SemVer ⾏行 ( 享 很 把
)
• 樣 所多 樂 網 中
Packagist Semver Checker 多
- 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.
- 42. Composer 是PHP Day #28
1. 'composer.lock' 太最 '
2. 最 網 'composer'update' '
3. 最 網那 'lock' 'package'
$'[php]'composer[.phar]'install
- 43. Composer 是PHP Day #28
1. 'composer.json'再'
2. ⼼心 網作 ''
3. 作 'packages'
4. 'composer.lock
$'[php]'composer[.phar]'update
- 44. Composer 是PHP Day #28
• $'composer'install
- (git'clone) 網
那
• $'composer'update
- composer.json
-
( composer.lock 再)
( 那快沒後第 )
- 46. Composer 是PHP Day #28
能⾏行
• 能⾏行 與
- 錯 (recca0120/laravel>tracy)
- 發 (vlucas/phpdotenv)
- 說對 都 (robmorgan/phinx)
- 可說對 (fzaninotto/faker)
- (nesbot/carbon)
- 47. Composer 是PHP Day #28
錯
$'composer'require'recca0120/laravel>tracy
• 起 給
• 起 多 等如 網 全 ⽅方 好
• print_r()因var_dump() 發 ⼦子
• 說對 sql 新 情
- 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. Composer 是PHP Day #28
發
$'composer'require'vlucas/phpdotenv
• 說 多 起
• 都 不 網 說
都 都
• 起 網 ⼼心 說
- 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. Composer 是PHP Day #28
說對 都
$'composer'require'robmorgan/phinx
• 起 都 網 說對
• 網 說對
• 看 說對 本
• 說對 也也
- 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. 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. 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. Composer 是PHP Day #28
可說對
$'composer'require'fzaninotto/faker
• 多 說對 起 網每 說對
aaa因xxx因asdf 我 說對
• 剛 因 無 說對
• 網 可 說對
- 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),'
];
- 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)),'
];
- 60. Composer 是PHP Day #28
{'
''''"autoload":'{'
''''''''"psr>4":'{...},'
''''''''"classmap":'[...],'
''''''''"files":'[...]'
''''},'
''''"autoload>dev":'{'
''''''''"psr>4":'{...},'
''''''''"classmap":'[...],'
''''''''"files":'[...]'
''''},'
}
$'vim'composer.json
- 61. Composer 是PHP Day #28
psr>4
{'
''''"autoload":'{'
''''''''"psr>4":'{'
''''''''''''"App":'"app/"'
''''''''}'
''''}'
}
$'composer'dump>autoload
- 62. Composer 是PHP Day #28
index.php
composer.lock
composer.json
vendor/
app/
autoload.php
MyAwesomeClass.php
<?php'
namespace'App;'
class'MyAwesomeClass'extends'SuperPower'
{'
''''//'...'
}
- 63. 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();'
?>
- 64. Composer 是PHP Day #28
classmap
{'
''''"autoload":'{'
''''''''"classmap":'['
'''''''''''"libs"'
'''''''']'
''''}'
}
$'composer'dump>autoload
- 65. 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'
{'
''''//'...'
}
- 66. 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();'
?>
- 67. Composer 是PHP Day #28
files
{'
''''"autoload":'{'
''''''''"files":'{'
''''''''''''"helpers/my>functions.php"'
''''''''},'
''''}'
}
$'composer'dump>autoload
- 68. 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()'{'
''''''''//...'
''''}'
}
- 69. 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>'
<!>>'...'>>>