成功案例
最后更新于:2022-04-01 23:13:47
# 案例
- [VDemocracy.tw - 群眾募資‧群眾集資網站 Crowdfunding Platform in Taiwan](http://www.vdemocracy.tw/)
- [Builtwithlaravel.com](http://builtwithlaravel.com/)
';
主機
最后更新于:2022-04-01 23:13:45
編輯開發
最后更新于:2022-04-01 23:13:42
教學網站
最后更新于:2022-04-01 23:13:40
# 教學網站
### 英文
- [Laravel Recipes](http://laravel-recipes.com/)
- [Laravel-Tricks.com](http://laravel-tricks.com/)
- [Web development, design, and other nerdy topics! | Dayle Rees](http://daylerees.com/codebright)
- [Laravel Book](http://laravelbook.com/)
- [PHP: The Right Way](http://www.phptherightway.com/)
# 中文
- [Laravel 初體驗 - 實作 Blog 系統 | Laravel Dojo](http://www.laravel-dojo.com/courses/laravel4-first-class)
- [PHP: The Right Way 繁體中文](http://laravel-taiwan.github.io/php-the-right-way/)
';
教學影片
最后更新于:2022-04-01 23:13:38
服務工具
最后更新于:2022-04-01 23:13:35
套件
最后更新于:2022-04-01 23:13:33
# 套件
### 清單
- [Packalyst :: Packages for Laravel](http://packalyst.com/)
- [Packagist - tag laravel](https://packagist.org/search/?tags=laravel)
- [Laravel Collective](http://laravelcollective.com/)
- [Arsenal :: Cartalyst](https://cartalyst.com/)
- [Built with Laravel](http://builtwithlaravel.com/)
### 時間
- [Carbon - A simple PHP API extension for DateTime.](http://carbon.nesbot.com/)
### 編輯器
- [Laravel Markdown](https://github.com/GrahamCampbell/Laravel-Markdown)
### 檔案
- [Laravel Flysystem](https://github.com/GrahamCampbell/Laravel-Flysystem)
### 除錯
- [The missing tail command for Laravel 5](https://github.com/freekmurze/laravel-tail)
- [Laravel Exceptions](https://github.com/GrahamCampbell/Laravel-Exceptions)
- [Laravel Debugbar](https://github.com/barryvdh/laravel-debugbar)
### 條碼
- [Simple QrCode](https://github.com/SimpleSoftwareIO/simple-qrcode)
### 社群
- [Laravel GitHub](https://github.com/GrahamCampbell/Laravel-GitHub)
### CMS
- [Wardrobe](https://github.com/wardrobecms/wardrobe)
- [Bootstrap CMS](https://github.com/BootstrapCMS/CMS)
- [TypiCMS](https://github.com/TypiCMS/Base)
- [PHPHub](https://github.com/summerblue/phphub)
- [Cachet](https://github.com/cachethq/Cachet)
- [Paperwork](https://github.com/twostairs/paperwork)
### Open Source
- [laravel-tricks](https://github.com/CodepadME/laravel-tricks)
';
文章
最后更新于:2022-04-01 23:13:31
# 文章
### 部落格
- [MattStauffer.co](https://mattstauffer.co/blog/)
### 文件
- [Awesome Laravel](https://github.com/chiraggude/awesome-laravel)
### 除錯
- [Debugging Queries in Laravel](https://scotch.io/tutorials/debugging-queries-in-laravel)
### IoC
- [神奇的服务容器](https://phphub.org/topics/789)
### 事件
- [Step by Step Guide to Installing Socket.io and Broadcasting Events with Laravel 5.1](https://laracasts.com/discuss/channels/general-discussion/step-by-step-guide-to-installing-socketio-and-broadcasting-events-with-laravel-51)
';
文件
最后更新于:2022-04-01 23:13:29
# 文件
### Laravel
- [A Laravel 5 Boilerplate Project](https://github.com/rappasoft/laravel-5-boilerplate)
- [Laravel Book](http://laravelbook.com/)
- [Web development, design, and other nerdy topics! | Dayle Rees](http://daylerees.com/codebright)
- [Laravel-簡潔、優雅的PHP開發框架(PHP Web Framework)。 - Laravel中文網Laravel中國社區](http://www.golaravel.com/)
- [Simple Laravel ♥ Scotch](http://scotch.io/series/simple-laravel)
- [Awesome Laravel](#)
- [Curso de Laravel 5 en español desde cero | styde.net](https://styde.net/laravel-5/)
- [Laravel Collective](http://laravelcollective.com/)
### PHP
- [Awesome PHP](https://github.com/ziadoz/awesome-php)
- [PHP-Tools](https://github.com/asika32764/PHP-Tools)
- [SitePoint PHP – Learn PHP, MySQL, SOAP & more](http://www.sitepoint.com/php/)
### 設計模式
- [PSR 繁體中文](https://github.com/laravel-taiwan/fig-standards/tree/master/accepted/zh-TW)
### 安裝
- [How to Setup Laravel 4 - Tuts+ Code Tutorial](http://code.tutsplus.com/tutorials/how-to-setup-laravel-4--net-28614)
### 指令函式
- [Laravel Cheat Sheet](http://cheats.jesse-obrien.ca/)
- [LaravelSnippets.com](http://laravelsnippets.com/)
- [Laravel-Tricks.com](http://laravel-tricks.com/)
';
工作
最后更新于:2022-04-01 23:13:26
會議議程
最后更新于:2022-04-01 23:13:24
社群
最后更新于:2022-04-01 23:13:22
官方
最后更新于:2022-04-01 23:13:20
# 官方學習資源
### Framework
- [Laravel - The PHP Framework For Web Artisans](http://laravel.com/)
- [Lumen - PHP Micro-Framework By Laravel](http://lumen.laravel.com/)
### 最新消息
- [Laravel News](https://laravel-news.com/)
- [Laravel Weekly](http://laravelweekly.com/)
### 文件 (Document)
- [Welcome! - Laravel PHP Framework](http://laravel.com/)
- [Laravel wiki](http://wiki.laravel.io/Laravel.io_Wiki)
### API
- [Laravel 5 API Documentation](http://laravel.com/api/5.0/)
### 套件清單
- [Packalyst :: Packages for Laravel](http://packalyst.com/)
- [Packagist - tag laravel](https://packagist.org/search/?tags=laravel)
- [Laravel Collective](http://laravelcollective.com/)
- [Arsenal :: Cartalyst](https://cartalyst.com/)
### 作者
- [Taylor Otwell | Twitter](https://twitter.com/taylorotwell)
';
學習資源
最后更新于:2022-04-01 23:13:17
Laravel 5.1 目錄結構異動
最后更新于:2022-04-01 23:13:15
# Laravel 5.1 目錄結構異動
從 Laravel 5.0 升級到 Laravel 5.1 時,app 的目錄結構有做一些小異動,異動如下
- app/Command => app/Jobs
- app/Handlers => app/Listeners
根據官方說法,這樣的命名比較能夠識別出該目錄程式的作用是什麼
- 命令(Command) => 工作(Jobs)
- 處理器(Handlers) => 事件傾聽器(Listeners)
在從 5.0 升級至 5.1 時,記得將這幾個目錄做重新命名喔~
### 參考資料
- [Directory Changes - Laracast](https://laracasts.com/series/whats-new-in-laravel-5-1/episodes/7)
- [Release Notes - laravel.tw](http://laravel.tw/docs/5.1/releases)
';
變更專案目錄名稱導致 View 無法讀取
最后更新于:2022-04-01 23:13:13
# 變更專案目錄名稱導致 View 無法讀取
在想要變更原先 Laravel 5 的專案目錄時,Laravel 5 會告訴你你沒辦法讀取到 view 的目錄,看了錯誤的訊息發現這個 view 的目錄是在原先舊專案的目錄名稱下
錯誤訊息長得像這樣:
~~~
InvalidArgumentException in FileViewFinder.php line 137:
View [welcome] not found.
~~~
這個原因是 Laravel 5 會將設定檔作快取存下來到 `bootstrap/cache/config.php` 目錄下面,而這個快取的檔案是原本舊專案的設定,所以我們必須要清除這個快取,才可以讓 Laravel 5 可以讀取到新的設定,這時候我們可以在 artisan 下這些指令,清除原先專案的快取設定:
~~~
$ php artisan config:clear
$ php artisan view:clear
~~~
執行清除這些快取資料後,我們就可以正常的的獨到新專案目錄下的 view 資料摟!
';
Call to undefined method getCachedCompilePath()
最后更新于:2022-04-01 23:13:11
# Call to undefined method getCachedCompilePath()
我在使用 Laravel 5.0.x 時,使用 `composer update` 去更新目前的套件時,跳出了這樣的訊息:
(PS:也有人在執行 `php artisan clear-compiled` 出現這樣的狀況)
> PHP Fatal error: Call to undefined method Illuminate\Foundation\Application::getCachedCompilePath()
這個是因為 Laravel 5 在執行時會把整個 Framework 編譯到 `storage/framework/compiled.php`,若這個檔案已產生,Laravel 5 在更新套件時執行一些相關 Laravel 的功能時,會預設執行 `compiled.php` 檔案中的類別函式,而更新的檔案中有 `getCachedCompilePath()` 這個方法,所以呼叫時 Laravel 會在舊的 `compiled.php` 找不到這個方法
**_解決方式_**
直接把 `storage/framework/compiled.php` 刪除即可,Laravel 5 會自動重新產生這個 `compiled.php` 檔案!
### 參考資料
- [RuntimeException on fresh install](https://laracasts.com/discuss/channels/general-discussion/runtimeexception-on-fresh-install?page=1)
';
其他常見問題
最后更新于:2022-04-01 23:13:08
# 其他常見問題
這裏會介紹一些在開發 Laravel 5 遇到的常見問題
- [Call to undefined method getCachedCompilePath()](#)
';
設計模式
最后更新于:2022-04-01 23:13:06
# 設計模式套件
這裏會介紹一些 Laravel 5 不錯的設計模式套件
### Entity 資料顯示
- [laracasts/presenter](https://github.com/laracasts/Presenter)
';
Carbon
最后更新于:2022-04-01 23:13:04
# Carbon 時間套件
Carbon 是一個很方便的轉換時間的工具,可以很方便地將時間進行轉換,取得我們想要的特定日期或格式
### 安裝
Laravel 5 預設就會安裝 Carbon 套件,若沒有安裝的話可以透過下列的方式進行安裝:
~~~
# 使用 Composer 下載 Carbon
$ composer require nesbot/carbon
~~~
~~~
toDateTimeString(); // 1975-05-21 22:00:00
// 從時間戳記建立
echo Carbon::createFromTimeStamp(-1)->toDateTimeString(); // 1969-12-31 18:59:59
echo Carbon::createFromTimeStamp(-1, 'Europe/London')->toDateTimeString(); // 1970-01-01 00:59:59
echo Carbon::createFromTimeStampUTC(-1)->toDateTimeString(); // 1969-12-31 23:59:59
~~~
### 轉換日期
~~~
year); // int(2012)
var_dump($dt->month); // int(9)
var_dump($dt->day); // int(5)
var_dump($dt->hour); // int(23)
var_dump($dt->minute); // int(26)
var_dump($dt->second); // int(11)
var_dump($dt->micro); // int(123789)
var_dump($dt->dayOfWeek); // int(3)
var_dump($dt->dayOfYear); // int(248)
var_dump($dt->weekOfMonth); // int(1)
var_dump($dt->weekOfYear); // int(36)
var_dump($dt->daysInMonth); // int(30)
var_dump($dt->timestamp); // int(1346901971)
var_dump(Carbon::createFromDate(1975, 5, 21)->age); // int(39) calculated vs now in the same tz
var_dump($dt->quarter); // int(3)
// 回傳與 UTC 差異的秒數
var_dump(Carbon::createFromTimestampUTC(0)->offset); // int(0)
var_dump(Carbon::createFromTimestamp(0)->offset); // int(-18000)
// 回傳與 UTC 差異的時數
var_dump(Carbon::createFromTimestamp(0)->offsetHours); // int(-5)
// 找出當天日否有日光節約時間
var_dump(Carbon::createFromDate(2012, 1, 1)->dst); // bool(false)
var_dump(Carbon::createFromDate(2012, 9, 1)->dst); // bool(true)
// 判斷指定的的時區是否與預設的時區相同
var_dump(Carbon::now()->local); // bool(true)
var_dump(Carbon::now('America/Vancouver')->local); // bool(false)
// 判斷是否為 UTC 的時區時間
var_dump(Carbon::now()->utc); // bool(false)
var_dump(Carbon::now('Europe/London')->utc); // bool(true)
var_dump(Carbon::createFromTimestampUTC(0)->utc); // bool(true)
// 取得時區實例
echo get_class(Carbon::now()->timezone); // DateTimeZone
echo get_class(Carbon::now()->tz); // DateTimeZone
// 取得時區實例的名稱
echo Carbon::now()->timezoneName; // America/Toronto
echo Carbon::now()->tzName; // America/Toronto
~~~
### 設定時間資料
~~~
year = 1975;
$dt->month = 13; // 年份會強制 +1,且月份變為 1 月
$dt->month = 5;
$dt->day = 21;
$dt->hour = 22;
$dt->minute = 32;
$dt->second = 5;
$dt->timestamp = 169957925; // 這個設定不會變更時區
// 透過字串或是 DateTimeZone 實例去設定時區
$dt->timezone = new DateTimeZone('Europe/London');
$dt->timezone = 'Europe/London';
$dt->tz = 'Europe/London';
// 鏈結設定方式
$dt->year(1975)->month(5)->day(21)->hour(22)->minute(32)->second(5)->toDateTimeString();
$dt->setDate(1975, 5, 21)->setTime(22, 32, 5)->toDateTimeString();
$dt->setDateTime(1975, 5, 21, 22, 32, 5)->toDateTimeString();
$dt->timestamp(169957925)->timezone('Europe/London');
$dt->tz('America/Toronto')->setTimezone('America/Vancouver');
~~~
### 格式化時間資料
~~~
toDateTimeString() == $dt); // bool(true) => uses __toString()
echo $dt->toDateString(); // 1975-12-25
echo $dt->toFormattedDateString(); // Dec 25, 1975
echo $dt->toTimeString(); // 14:15:16
echo $dt->toDateTimeString(); // 1975-12-25 14:15:16
echo $dt->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM
// 仍可以使用 format() 函式
echo $dt->format('l jS \\of F Y h:i:s A'); // Thursday 25th of December 1975 02:15:16 PM
// 常用的時間格式
echo $dt->toAtomString(); // in 1 Jahr
echo $dt->toCookieString(); // Thursday, 25-Dec-1975 14:15:16 EST
echo $dt->toIso8601String(); // 1975-12-25T14:15:16-0500
echo $dt->toRfc822String(); // Thu, 25 Dec 75 14:15:16 -0500
echo $dt->toRfc850String(); // Thursday, 25-Dec-75 14:15:16 EST
echo $dt->toRfc1036String(); // Thu, 25 Dec 75 14:15:16 -0500
echo $dt->toRfc1123String(); // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toRfc2822String(); // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toRfc3339String(); // 1975-12-25T14:15:16-05:00
echo $dt->toRssString(); // Thu, 25 Dec 1975 14:15:16 -0500
echo $dt->toW3cString(); // 1975-12-25T14:15:16-05:00
~~~
### 比較時間差異
~~~
tzName; // America/Toronto
$first = Carbon::create(2012, 9, 5, 23, 26, 11);
$second = Carbon::create(2012, 9, 5, 20, 26, 11, 'America/Vancouver');
echo $first->toDateTimeString(); // 2012-09-05 23:26:11
echo $first->tzName; // America/Toronto
echo $second->toDateTimeString(); // 2012-09-05 20:26:11
echo $second->tzName; // America/Vancouver
// 大於、等於、小於
var_dump($first->eq($second)); // bool(true)
var_dump($first->ne($second)); // bool(false)
var_dump($first->gt($second)); // bool(false)
var_dump($first->gte($second)); // bool(true)
var_dump($first->lt($second)); // bool(false)
var_dump($first->lte($second)); // bool(true)
$first->setDateTime(2012, 1, 1, 0, 0, 0);
$second->setDateTime(2012, 1, 1, 0, 0, 0); // Remember tz is 'America/Vancouver'
var_dump($first->eq($second)); // bool(false)
var_dump($first->ne($second)); // bool(true)
var_dump($first->gt($second)); // bool(false)
var_dump($first->gte($second)); // bool(false)
var_dump($first->lt($second)); // bool(true)
var_dump($first->lte($second)); // bool(true)
// 時間區間比較
$first = Carbon::create(2012, 9, 5, 1);
$second = Carbon::create(2012, 9, 5, 5);
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true)
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
// 時間大小比較
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
echo $dt1->min($dt2); // 2012-01-01 00:00:00
$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0);
$dt2 = Carbon::create(2014, 1, 30, 0, 0, 0);
echo $dt1->max($dt2); // 2014-01-30 00:00:00
// now is the default param
$dt1 = Carbon::create(2000, 1, 1, 0, 0, 0);
echo $dt1->max();
// 時間差異運算
echo Carbon::now('America/Vancouver')->diffInSeconds(Carbon::now('Europe/London')); // 0
$dtOttawa = Carbon::createFromDate(2000, 1, 1, 'America/Toronto');
$dtVancouver = Carbon::createFromDate(2000, 1, 1, 'America/Vancouver');
echo $dtOttawa->diffInHours($dtVancouver); // 3
echo $dtOttawa->diffInHours($dtVancouver, false); // 3
echo $dtVancouver->diffInHours($dtOttawa, false); // -3
$dt = Carbon::create(2012, 1, 31, 0);
echo $dt->diffInDays($dt->copy()->addMonth()); // 31
echo $dt->diffInDays($dt->copy()->subMonth(), false); // -31
$dt = Carbon::create(2012, 4, 30, 0);
echo $dt->diffInDays($dt->copy()->addMonth()); // 30
echo $dt->diffInDays($dt->copy()->addWeek()); // 7
$dt = Carbon::create(2012, 1, 1, 0);
echo $dt->diffInMinutes($dt->copy()->addSeconds(59)); // 0
echo $dt->diffInMinutes($dt->copy()->addSeconds(60)); // 1
echo $dt->diffInMinutes($dt->copy()->addSeconds(119)); // 1
echo $dt->diffInMinutes($dt->copy()->addSeconds(120)); // 2
echo $dt->addSeconds(120)->secondsSinceMidnight(); // 120
~~~
### 時間狀態
~~~
isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();
$dt->isSameDay(Carbon::now());
$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
var_dump($born->isBirthday($noCake)); // bool(false)
var_dump($born->isBirthday($yesCake)); // bool(true)
~~~
### 時間運算
~~~
toDateTimeString(); // 2012-01-31 00:00:00
echo $dt->addYears(5); // 2017-01-31 00:00:00
echo $dt->addYear(); // 2018-01-31 00:00:00
echo $dt->subYear(); // 2017-01-31 00:00:00
echo $dt->subYears(5); // 2012-01-31 00:00:00
echo $dt->addMonths(60); // 2017-01-31 00:00:00
echo $dt->addMonth(); // 2017-03-03 00:00:00 equivalent of $dt->month($dt->month + 1); so it wraps
echo $dt->subMonth(); // 2017-02-03 00:00:00
echo $dt->subMonths(60); // 2012-02-03 00:00:00
echo $dt->addDays(29); // 2012-03-03 00:00:00
echo $dt->addDay(); // 2012-03-04 00:00:00
echo $dt->subDay(); // 2012-03-03 00:00:00
echo $dt->subDays(29); // 2012-02-03 00:00:00
echo $dt->addWeekdays(4); // 2012-02-09 00:00:00
echo $dt->addWeekday(); // 2012-02-10 00:00:00
echo $dt->subWeekday(); // 2012-02-09 00:00:00
echo $dt->subWeekdays(4); // 2012-02-03 00:00:00
echo $dt->addWeeks(3); // 2012-02-24 00:00:00
echo $dt->addWeek(); // 2012-03-02 00:00:00
echo $dt->subWeek(); // 2012-02-24 00:00:00
echo $dt->subWeeks(3); // 2012-02-03 00:00:00
echo $dt->addHours(24); // 2012-02-04 00:00:00
echo $dt->addHour(); // 2012-02-04 01:00:00
echo $dt->subHour(); // 2012-02-04 00:00:00
echo $dt->subHours(24); // 2012-02-03 00:00:00
echo $dt->addMinutes(61); // 2012-02-03 01:01:00
echo $dt->addMinute(); // 2012-02-03 01:02:00
echo $dt->subMinute(); // 2012-02-03 01:01:00
echo $dt->subMinutes(61); // 2012-02-03 00:00:00
echo $dt->addSeconds(61); // 2012-02-03 00:01:01
echo $dt->addSecond(); // 2012-02-03 00:01:02
echo $dt->subSecond(); // 2012-02-03 00:01:01
echo $dt->subSeconds(61); // 2012-02-03 00:00:00
~~~
### 人類閱讀時間格式
~~~
subDays(5)->diffForHumans(); // 5 days ago
echo Carbon::now()->diffForHumans(Carbon::now()->subYear()); // 1 year after
$dt = Carbon::createFromDate(2011, 8, 1);
echo $dt->diffForHumans($dt->copy()->addMonth()); // 1 month before
echo $dt->diffForHumans($dt->copy()->subMonth()); // 1 month after
echo Carbon::now()->addSeconds(5)->diffForHumans(); // 5 seconds from now
echo Carbon::now()->subDays(24)->diffForHumans(); // 3 weeks ago
echo Carbon::now()->subDays(24)->diffForHumans(null, true); // 3 weeks
~~~
### 時間常數
~~~
';