æ°ã¶æåãåœç€Ÿã¯ãã»ãšãã©ã®ãããžã§ã¯ãã«äœ¿çšããäŒæ¥ã®PHPãã¬ãŒã ã¯ãŒã¯ãéžæããããšã«ããŸããã ãã®åã«ã¯ãSymfonyãZend FrameworkãYiiãšããåç©åããããŸããã 人æ°ã®ãããã¬ãŒã ã¯ãŒã¯ã確èªããåŸã
Laravelã詊ãããšã«ããŸããã æ°æ¥éã®ãã¬ãŒãã³ã°ã®çµæãç°¡åãªã¢ããªã±ãŒã·ã§ã³ãäœæããã
æŠèŠãäœæãããŸãããã詳现ãªãã¥ãŒããªã¢ã«ããã§ã«
ããã«
ååšãããã ãéçºã«åœ¹ç«ã€4ã€ã®ããŒã«ã«ã€ããŠã®ã¿æžãããšã«ããŸããã
- Laravel IDEãã«ããŒãžã§ãã¬ãŒã¿ãŒ
- Laravel 4ãããã°ããŒ
- ãã§ã€ã«ãŒ
- ããŒã ã¹ããã
Laravel IDEãã«ããŒãžã§ãã¬ãŒã¿ãŒ
LaravelãåããŠã€ã³ã¹ããŒã«ãããæ°ã«å
¥ãã®IDEãéããšãã·ã§ãã¯ãçºçããŸãïŒãŸãã確ãã«ã·ã§ãã¯ãåããŸããããããã
匷ããªãã§ããã
ïŒ ããã¡ãµãŒããšã¢ãã«ã®ãªãŒãã³ã³ããªãŒãã¯æ©èœããŸããã ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã

ãã¡ãããã³ãŒã
ã®ãã¡ãµãŒããå®å
šã«
æŸæ£ããããšã¯ã§ããŸããããã®ãããªæ ¹æ¬çãªè§£æ±ºçã¯ãããŸãã
-Laravel IDE Helper Generatorã§ãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããã³ãŒãã«åºã¥ããŠãçæãããéçãã¡ãµãŒãã¯ã©ã¹ãå«ããã«ããŒãã¡ã€ã«ãçæããããã±ãŒãžã§ãã ã¯ã©ã¹ã¯ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠäœ¿çšãããããšã¯ãããŸããããIDEã®å®äºã«ã®ã¿å¿
èŠã§ãã
èšçœ®
ã³ã³ããŒã¶ãŒçµç±ã§ã€ã³ã¹ããŒã«ãã
composer require barryvdh/laravel-ide-helper:1.*
app/config/app.php
ã®ãããã€ããŒé
åã«æ°ãããµãŒãã¹ãããã€ããŒã远å ã
app/config/app.php
ã
'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider'
ãã¡ãµãŒãçšã®ãã¡ã€ã«ãã«ããŒãçæã§ããããã«ãªããŸãã
php artisan clear-compiled php artisan ide-helper:generate php artisan optimize
ããŒã¿ããŒã¹ãšã®æ¥ç¶ãèšè¿°ããŠããªãå Žåããšã©ãŒã Could not determine driver/connection for DB
ããããã¢ããããŸã-ããã¯æ£åžžã§ããã¡ã€ã«ã¯çæãããŸã
ïŒããããã®ããŒãã«ã«åºã¥ããŠïŒéåŒãªã¢ãã«ã®èª¬æãå«ãããã¯ãããã¯ãçæããã«ã¯ïŒ
php artisan ide-helper:models
ãžã§ãã¬ãŒã¿ãŒã¯ãæ¢åã®ã¢ãã«ã¯ã©ã¹ãŸãã¯å¥ã®_ide_helper_models.php
ãã¡ã€ã«ã«ããã¯ãããã¯ã远å ããããã«æ±ããŸãã ç§ã¯ã¢ãã«ã«è¿œå ããããšã奜ã¿ãŸãããããã¯å¥œã¿ã®åé¡ã§ã
Laravel 4ãããã°ããŒ
Laravel Debugbarã¯ãPHP Debug Barãã¬ãŒã ã¯ãŒã¯ã«çµ±åããããã±ãŒãžã§ãã
ã³ãŒãã®å¶åŸ¡ãšãããã°ãå¯èœã«ããéåžžã«äŸ¿å©ãªããŒã«ã çºçãããªã¯ãšã¹ãã®æ°ïŒçªç¶
::with('smth')
ã远å ããã®ãå¿ããå Žå
::with('smth')
ïŒã
::with('smth')
ããã°ã«æžã蟌ãŸããå
容ãçŸåšã®ãŠãŒã¶ãŒã«é¢ããæ
å ±ãããŒãžã®çæã«äœ¿çšãããã¿ã€ããåžžã«ææ¡ã§ããŸããããŒã¿ã¯åœŒãã«è»¢éãããŸããã ãŸãããªãã€ã¬ã¯ããçºçããå Žåã§ãããã€ã§ã以åã®ãªã¯ãšã¹ãã«é¢ããæ
å ±ã衚瀺ã§ããŸãã
ããã¯ãéããŠãããããã°ããŒã®å€èгã§ãã

Debugbarã¯æ¬¡ã®æ
å ±ã衚瀺ã§ããŸãïŒæšæºã®PHP Debug Barã³ã¬ã¯ã¿ãŒã«å ããŠãããã€ãã®ã«ã¹ã¿ã ã³ã¬ã¯ã¿ãŒãå«ãŸããŠããŸãïŒã
QueryCollector
ïŒå®äºãããã¹ãŠã®ã¯ãšãªãšãããã«ããã£ãæéRouteCollector
ïŒçŸåšã®ã«ãŒãæ
å ±ViewCollector
ïŒäœ¿çšæžã¿ãã¥ãŒïŒãªãã·ã§ã³ã§ãã¥ãŒã«è»¢éãããããŒã¿ã衚瀺ã§ããŸãããããã¯ã¢ããªã±ãŒã·ã§ã³ã®é床ã«åœ±é¿ããå¯èœæ§ããããŸãïŒEventsCollector
ïŒãã¹ãŠã®ã€ãã³ã-æ¢çŽ¢ãã䟡å€ããããLaravelã«ã¯ããŸããŸãªã€ãã³ãããããŸãLaravelCollector
ïŒLaravelããŒãžã§ã³ãšç°å¢æ
å ±ïŒããã©ã«ãã§ã¯ç¡å¹ïŒSymfonyRequestCollector
ïŒãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®æ
å ±LogsCollector
ïŒææ°ã®ãã°ãšã³ããªã衚瀺ããŸãïŒä»¥åã®ã¯ãšãªã§äœæããããã®ãå«ãïŒã ïŒããã©ã«ãã§ã¯ç¡å¹ïŒFilesCollector
ïŒãªã¯ãšã¹ãäžã«äœ¿çšããã.phpãã¡ã€ã«ïŒããã©ã«ãã§ã¯ç¡å¹ïŒConfigCollector
ïŒã¢ããªã±ãŒã·ã§ã³æ§æïŒããã©ã«ãã§ã¯ç¡å¹ïŒLogCollector
ïŒãã°Monologã MessagesCollector
ã³ã¬ã¯ã¿ãŒãæå¹ã«ãªã£ãŠããå Žåããã®ãã°ã«ã¯MessageCollector
ã衚瀺ãããŸãPhpInfoCollector
ïŒPHPããŒãžã§ã³æ
å ±MessagesCollector
ïŒãã°ã¡ãã»ãŒãžïŒPSR-3ãã¬ãŒã§åäœïŒTimeDataCollector
ïŒã©ã³ã¿ã€ã MemoryCollector
ïŒäœ¿çšãããŠããã¡ã¢ãªã®éExceptionsCollector
ïŒäŸå€
ãšããã§ãLaravel 4.2.2
ã§ã¯ ããã¬ãŒã ã¯ãŒã¯ãã
Whoopsãåé€ãããŸããïŒããã¯éçºè
ã«ãšã£ãŠæãçŸãããšã©ãŒããŒãžã§ãïŒãSymfonyDisplayerã䜿çšããããã«ãªããŸãããããã¯åã«ã¹ã¿ãã¯ãã¬ãŒã¹ã衚瀺ããŸãã ã¯ãšãªãã©ã¡ãŒã¿ãªã©ã®è¡šç€ºã«æ
£ããŠããå Žåã¯ãLaravel Debugbarã䜿çšãããšããã®å€æŽãç©ããã«ä¹ãåãããšãã§ããŸãã ãã¡ããã
debug
ã¢ãŒãã§ã®ã¿æ©èœããŸãã
èšçœ®
composer require barryvdh/laravel-debugbar:dev-master
app/config/app.php
ã®ãããã€ããŒé
åã«æ°ãããããã€ããŒã远å ã
app/config/app.php
ã
'Barryvdh\Debugbar\ServiceProvider',
ãã®ããã±ãŒãžã®ãªãœãŒã¹ïŒã¹ã¿ã€ã«ãjsïŒã远å ããŸã
php artisan debugbar:publish
ããã±ãŒãžã®ããã¥ã¡ã³ãã§ãèè
ã¯ãªãœãŒã¹ãããŒãžã§ã³ã«ãã£ãŠç°ãªãå¯èœæ§ãããããšã«æ³šæãããã®è¡ã
composer.json
远å ããããšãæšå¥šããŠããŸãã
"post-update-cmd": [ "php artisan debugbar:publish" ],
䜿çšãããŠããã³ã¬ã¯ã¿ãŒã®ãªã¹ããç·šéããã«ã¯ãæåã«ãã®ããã±ãŒãžã®æ§æãã¡ã€ã«ã远å ããå¿
èŠããããŸãã
php artisan config:publish barryvdh/laravel-debugbar
ãããŠããã¡ã€ã«
app/config/packages/barryvdh/laravel-debugbar/config.php
ç·šéããŸãã
ãã§ã€ã«ãŒ
Fakerã¯Laravelã«é¢é£ä»ããããŠããªãã©ã€ãã©ãªã§ãããSiderã§ã®äœ¿çšã«ã¯éåžžã«äŸ¿å©ã§ãã Fakerã¯ãããŸããŸãªãã¹ãããŒã¿ãçæããŸãïŒæååãæ°åããããããµã€ãºã®ããã¹ãã ãã¹ãŠã®çš®é¡ã®ãŠãŒã¶ãŒããŒã¿ïŒååïŒæ§å¥ïŒãé»è©±çªå·ãã¡ãŒã«ã äœæããŒã¿ïŒéããåœã座æšãªã© ããŸããŸãªåœ¢åŒã®æéããŠã§ããµã€ãã¢ãã¬ã¹ãIPããã©ãŠã¶ãŠãŒã¶ãŒãšãŒãžã§ã³ããéè¡ã«ãŒãæ
å ±ãè²ãããŒã³ãŒããããŸããŸãªããã·ã¥ã
å¥éãç»åã®çæã«ã€ããŠèšåãã䟡å€ããããŸãããã®Fakerã¯
LoremPixelãžã§ãã¬ãŒã¿ãŒã䜿çšããå¿
èŠãªãµã€ãºãšæ¹åã®ç»åãã¡ã€ã«ãæå®ããããã©ã«ããŒã«æ
éã«ã³ããŒããããã§ãã
$filename = $faker->image('image/dir', 300, 300, 'cats');
ã©ã³ãã ãªãã¹ãããŒã¿ããä¿®æ£ãããããšãã§ããŸããã€ãŸããFakerãæ¯ååãããŒã¿ãçæããããã«ãã·ãŒããèšå®ããã ãã§ãã
$faker = Faker\Factory::create(); $faker->seed(1234); echo $faker->name;
ããŒã¿ã®äžææ§ãšãªãã·ã§ã³æ§ã確ä¿ã§ããŸãã
for ($i=0; $i < 5; $i++) {
å¿
èŠãªãã±ãŒã«ãã³ã³ã¹ãã©ã¯ã¿ã«æž¡ãããšã§ãããŒã¿ãããŒã«ã©ã€ãºããããšãã§ããŸã
$faker = Faker\Factory::create('ru_RU'); echo $faker->name;
ãã®ãããªã€ã³ã¹ããŒã«ã¯ãããŸãããäœæ²å®¶ã«ããŒãããã ãã§ã
composer require fzaninotto/faker:1.4.*@dev
ãããŠäœ¿çšãã
$faker = Faker\Factory::create('ru_RU'); echo $faker->name;
ããŒã ã¹ããã
Laravel 4.2ã§ã
Homestead -
Vagrant -boxïŒä»®æ³ãã·ã³ã®ã€ã¡ãŒãžïŒãå°å
¥ãããŸãããããã«ã¯ãLaravelã§ã®éçºã«å¿
èŠãªãã®ãã¹ãŠãå«ãŸããŠããŸãïŒæçµçã«ã¯ä»®æ³ãã·ã³ã ãã§ã¯ãããŸããïŒã 人æ°ã®ãããã¬ãŒã ã¯ãŒã¯ãå
¬åŒãã¯ã·ã³ã°ãæäŸããŠãããããšã¯ãšãŠãã¯ãŒã«ã ãšæããŸãã ãããäžè¬çãªéçºè
åãã®Linuxã®æ®åã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã ãããŠãWindowsã䜿çšããŠãã³ããŒãªã©ã«åº§ã£ãŠLinuxã詊ããŠã¿ãåå¿è
éçºè
ã®å€ãïŒãããŠã浮浪è
-ããã¯ãŸã£ããé£ããããšã§ã¯ãããŸããïŒã¯ããããã§ãã·ã§ãã«ã§æŠéã«è¿ãç°å¢ã§éçºãè¡ããŸãã ãããã£ãŠãããã«Windowsã«Homesteadãã€ã³ã¹ããŒã«ããããšã«ãã£ãšæ³šæãæããäžçãå°ãè¯ãããããšãæã¿ãŸãã
Homesteadã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãååã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãããŒãžã§ã³ãéçºã«å¿
èŠãªãœãããŠã§ã¢ã®å¯çšæ§ã«ã€ããŠèããå¿
èŠããªãããŸãã
1ã€ã®ã³ãã³ãã®ã¿ã䜿çšããŠéçºç°å¢ã«æ°ãããµã€ãã远å ã§ããŸãããŸãããå®ãã·ã¹ãã ïŒåŸã§
ã²ã¹ãã·ã¹ãã ãšåŒã³ãŸãïŒãšä»®æ³ãã·ã³ã®éã§ãæ§æã§æå®ãããä»»æã®æ°ã®ãã©ã«ããŒãåæããŸãã ã€ãŸãããæ°ã«å
¥ãã®ãšãã£ã¿ãŒã䜿çšããŠãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ã³ãŒãã®ç·šéãç¶è¡ã§ãããã¡ã€ã«ã¯èªåçã«ä»®æ³ãã·ã³ãšåæãããŸãã
ããŒã ã¹ãããã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- Ubuntu 14.04
- PHP 5.5
- Nginx
- MySQL
- ãã¹ãã°ã¬ã¹
- ããŒãïŒ+ BowerãGruntãGulpïŒ
- ã¬ãã£ã¹
- Memcached
- è±ã®æš
- ã©ã©ãŽã§ã«ç¹äœ¿
- ãã¡ããªãã¯+ HipChatæ¡åŒµæ©èœ
èšçœ®
ãŸãã
Vagrantãš
VirtualBoxãã€ã³ã¹ããŒã«ããŸããã€ã³ã¹ããŒã©ãŒã¯äžèŠãªè³ªåãããªããããã€ã³ã¹ããŒã«ã¯ç°¡åã§ãã
vagrantã®ã€ã³ã¹ããŒã«åŸãã€ã³ã¹ããŒã©ãŒã¯ã·ã¹ãã ã®åèµ·åãèŠæ±ããŸãã åèµ·åäžã«BIOSã«å
¥ããIntel Virtualization TechnologyïŒVT-xãAMD-Vãæ£çŽã«èšããšãç°ãªãã·ã¹ãã ã§ã©ã®ããã«åŒã³åºãããšãã§ãããããããŸããïŒãæå¹ã«ãªã£ãŠãããã©ããã確èªããæå¹ã«ãªã£ãŠããªãå Žåã¯ãªã³ã«ããŸãã
Windowsã䜿çšããŠããå Žåã¯ã³ã³ãœãŒã«ãéããGit BashãéããŸãïŒ
ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯
ã€ã³ã¹ããŒã«ããŸã ïŒããŸã å¿
èŠãªã®ã§ãHomesteadããã¯ã¹ã远å ããŠãã ããïŒ
vagrant box add laravel/homestead
ããã¯ã¹ãããŠã³ããŒããããŠããéã«ãHomesteadã®èšå®ã§ãªããžããªãã¯ããŒã³ããŸãã ããã¥ã¡ã³ãã§ã¯ããã¹ãŠã®ãããžã§ã¯ããä¿åããããã©ã«ããŒãžã®ã¯ããŒã³äœæãæšå¥šãããŠããŸãïŒäŸ
C:/Users/YourName/Workspace
ïŒïŒ
git clone https://github.com/laravel/homestead.git
homestead
ãã©ã«ããŒã«ç§»åããŠ
Homestead.yaml
æ§æãã¡ã€ã«ãéããšã次ã®ããã«ãªããŸãã
--- ip: "192.168.10.10"
sshããŒããªãå Žåã¯ã
ssh-keygen
ïŒWindowsã®Git Bashã§å©çšå¯èœïŒã䜿çšããŠçæã
ssh-keygen
ã
ssh-keygen -t rsa -C "your@email.com"
Homestead.yaml
å
¬ééµãšç§å¯éµãç»é²ããŸãã
ã²ã¹ãïŒã䜿ãã®ïŒãã·ã³ã§ãããžã§ã¯ããä¿åãããïŒãŸãã¯æ¢ã«ä¿åãããïŒãã©ã«ããŒãšãä»®æ³ãã·ã³äžã®å¯Ÿå¿ãããã¹ãæå®ããŸãã
ãã¹ããµã€ããã©ã«ããŒãäœæããŸããããšãã°ããããžã§ã¯ããã£ã¬ã¯ããªã«
test
ãäœæãã
test/public/index.php
ãã¡ã€ã«
test/public/index.php
远å ããŸãã
Homestead.yaml
ãã¹ãšç®çã®ã¢ãã¬ã¹ãæžã蟌ã¿ãŸãã ãã®çµæã
Homestead.yaml
ïŒWindowsçšïŒã¯æ¬¡ã®ããã«ãªããŸãã
--- ip: "192.168.10.10" memory: 2048 cpus: 1 authorize: C:\Users\YourName\.ssh\id_rsa.pub keys: - C:\Users\YourName\.ssh\id_rsa folders: - map: C:\Users\YourName\Workspace to: /home/vagrant/Workspace sites: - map: test.dev to: /home/vagrant/Workspace/test/public - map: anothersite.dev to: /home/vagrant/Workspace/anothersite/public
ã²ã¹ããã¹ãã®ãã¡ã€ã«ã«é©åãªè¡ã远å ããŸãïŒWindowsã®å ŽåïŒ
C:\Windows\System32\drivers\etc\hosts
ïŒïŒ
127.0.0.1 test.dev
ãã®ã»ããã¢ãããå®äºããããã·ã¹ãã ãäžåºŠã»ããã¢ããããå¿
èŠãããããšã«æ³šæããŠãã ãããä»åŸã®äœæ¥ã§ã¯ããããã®æé ãç¹°ãè¿ãå¿
èŠã¯ãããŸããã
homesteadãã£ã¬ã¯ããªã§å®è¡ããããšããå§ããŸãïŒ
vagrant up
vagrantãä»®æ³ãã·ã³ãåæåããŠèµ·åããåŸã
test.dev ïŒ8000ã«
ç§»åããŠããã®åäœã確èªã§ããŸãã
ããã ãã§ã äœæ¥ãå¿
èŠãªã®ã¯
vagrant up
ã³ãã³ãã®ã¿ã§ãã
䜿çšãã
ã²ã¹ããã·ã³ã®æ¬¡ã®ããŒããä»®æ³ãã·ã³ã«ãªãã€ã¬ã¯ããããŸãã
SSHïŒ2222-> 22
HTTPïŒ8000-> 80
MySQLïŒ33060-> 3306
PostgresïŒ54320-> 5432
ã€ãŸããããšãã°ã次ã®ããã«ã¯ã©ã€ã¢ã³ããã·ã³ããmysqlã«æ¥ç¶ã§ããŸãã
mysql -u homestead -p -P 33060 -h 127.0.0.1
postgresqlãšmysqlã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒãã¯ãäž¡æ¹ãšãvagrant / secretããã³root / secretã§ãã
ä»®æ³ãã·ã³å
ããããŒã¿ããŒã¹ã«æ¥ç¶ããå Žåã¯ãæšæºããŒãã䜿çšããŸãã
sshãä»ããŠä»®æ³ãã·ã³ã«ãã°ã€ã³ããŸãã
vagrant ssh
ãã¹ãŠã®vagrant
ã³ãã³ãã¯ã homestead
ãã£ã¬ã¯ããªããå®è¡ããå¿
èŠããããŸã
æ°ãããµã€ãã远å ããã«ã¯2ã€ã®æ¹æ³ããããŸãã
Homestead.yamlã«æ°ãããµã€ãã远å ããŸã
sites: - map: test.dev to: /home/vagrant/Workspace/test/public - map: anothersite.dev to: /home/vagrant/Workspace/anothersite/public - map: new.dev to: /home/vagrant/Workspace/new/public
ãããŠå®è¡ïŒ
vagrant provision
ãŸãã¯ãä»®æ³ãã·ã³ã«ãã°ã€ã³ããŠserveã³ãã³ãã䜿çšããŸã
vagrant ssh serve new.dev /home/vagrant/Workspace/new/public
ãããã®ã¡ãœããã®ããããã远å ããåŸãhostsãã¡ã€ã«ãæŽæ°ããŠãã ããïŒ
127.0.0.1 new.dev
ããã ãã§ã çŽ æŽãããéçºãïŒ