یادداشت های انتشار
خط مشی پشتیبانی
اصلاحات امنیتی همیشه در نسخه اصلی قبلی لاراول اعمال می شود. در حال حاضر، تمام اصلاحات و وصله های امنیتی برای Laravel 5.x و Laravel 4.x اعمال خواهند شد.
در صورت امکان، اصلاحات امنیتی حتی برای نسخههای قدیمیتر این چارچوب، مانند Laravel 3.x نیز اعمال خواهد شد.
لاراول 5.0
لاراول 5.0 یک ساختار کاربردی جدید را به پروژه پیش فرض لاراول معرفی می کند. این ساختار جدید بهعنوان پایهای بهتر برای ساخت برنامههای قوی در لاراول عمل میکند، و همچنین استانداردهای جدید بارگذاری خودکار (PSR-4) را در سراسر برنامه در بر میگیرد. ابتدا برخی از تغییرات عمده را بررسی می کنیم:
ساختار پوشه جدید
دایرکتوری قدیمی
app/models
به طور کامل حذف شده است.
در عوض، تمام کد شما مستقیماً در
app
پوشه زندگی می کند و به طور پیش فرض در
App
فضای نام سازماندهی می شود.
این فضای نام پیش فرض را می توان به سرعت با استفاده از
app:name
دستور Artisan جدید تغییر داد.
کنترلکنندهها، میانافزارها و درخواستها (نوع جدیدی از کلاس در لاراول 5.0) اکنون در زیر
app/Http
فهرست گروهبندی میشوند، زیرا همگی کلاسهای مربوط به لایه انتقال HTTP برنامه شما هستند.
به جای یک فایل صاف و منفرد از فیلترهای مسیر، همه میان افزارها اکنون به فایل های کلاس خود تبدیل می شوند.
app/Providers
یک فهرست
جدید جایگزین
app/start
فایل های نسخه های قبلی Laravel 4.x می شود.
این ارائه دهندگان خدمات، توابع مختلف راهاندازی را برای برنامه شما ارائه میکنند، مانند مدیریت خطا، ثبتنام، بارگذاری مسیر و موارد دیگر.
البته، شما آزاد هستید که ارائه دهندگان خدمات اضافی را برای برنامه خود ایجاد کنید.
فایل ها و نماهای زبان برنامه به دایرکتوری منتقل شده اند
resources
.
قراردادها
تمام اجزای اصلی لاراول رابط هایی را که در مخزن قرار دارند پیاده سازی می کنند
illuminate/contracts
.
این مخزن هیچ وابستگی خارجی ندارد.
داشتن مجموعهای از رابطهای مناسب و واقع در مرکز که میتوانید برای جداسازی و تزریق وابستگی استفاده کنید، به عنوان یک گزینه جایگزین آسان برای نماهای لاراول خواهد بود.
برای اطلاعات بیشتر در مورد قراردادها، به اسناد کامل مراجعه کنید .
کش مسیر
اگر برنامه شما به طور کامل از مسیرهای کنترل کننده تشکیل شده است، می توانید از
route:cache
دستور Artisan جدید برای سرعت بخشیدن به ثبت مسیرهای خود استفاده کنید.
این در درجه اول برای برنامههایی با بیش از 100 مسیر مفید است و سرعت این بخش از برنامه شما را
به شدت
افزایش میدهد.
Route Middleware
علاوه بر "فیلترهای مسیر" سبک لاراول 4، لاراول 5 اکنون از میان افزار HTTP پشتیبانی می کند و "فیلترهای" احراز هویت و CSRF موجود به میان افزار تبدیل شده اند. Middleware یک رابط منفرد و منسجم برای جایگزینی انواع فیلترها ارائه می دهد که به شما این امکان را می دهد تا درخواست ها را قبل از ورود به برنامه شما به راحتی بررسی و حتی رد کنید.
برای اطلاعات بیشتر در مورد میان افزار، مستندات را بررسی کنید .
روش تزریق کنترلر
علاوه بر تزریق سازنده موجود، اکنون میتوانید وابستگیهای متدهای کنترلکننده را تایپ کنید. کانتینر سرویس به طور خودکار وابستگی ها را تزریق می کند، حتی اگر مسیر دارای پارامترهای دیگری باشد:
public function createPost(Request $request, PostRepository $posts){ //}
داربست احراز هویت
کنترلکنندههای ثبت نام کاربر، احراز هویت و تنظیم مجدد رمز عبور اکنون خارج از جعبه، و همچنین نماهای متناظر ساده، که در
resources/views/auth
.
علاوه بر این، انتقال جدول "کاربران" همراه با چارچوب گنجانده شده است.
گنجاندن این منابع ساده امکان توسعه سریع ایدههای کاربردی را بدون گیرکردن در دیگ احراز هویت فراهم میکند.
نماهای احراز هویت ممکن است در مسیرهای
auth/login
و قابل دسترسی باشند
auth/register
.
این
App\Services\Auth\Registrar
سرویس مسئول اعتبارسنجی و ایجاد کاربر است.
اشیاء رویداد
اکنون می توانید به جای استفاده از رشته ها، رویدادها را به عنوان اشیا تعریف کنید. برای مثال، رویداد زیر را بررسی کنید:
class PodcastWasPurchased { public $podcast; public function __construct(Podcast $podcast) { $this->podcast = $podcast; } }
رویداد ممکن است به صورت عادی ارسال شود:
Event::fire(new PodcastWasPurchased($podcast));
البته، کنترل کننده رویداد شما به جای لیستی از داده ها، شی رویداد را دریافت می کند:
class ReportPodcastPurchase { public function handle(PodcastWasPurchased $event) { // } }
برای اطلاعات بیشتر در مورد کار با رویدادها، مستندات کامل را بررسی کنید .
دستورات / صف
علاوه بر فرمت کار صف پشتیبانی شده در لاراول 4، لاراول 5 به شما این امکان را می دهد تا کارهای صف خود را به عنوان اشیاء دستوری ساده نشان دهید.
این دستورات در
app/Commands
دایرکتوری وجود دارند.
در اینجا یک دستور نمونه وجود دارد:
class PurchasePodcast extends Command implements SelfHandling, ShouldBeQueued { use SerializesModels; protected $user, $podcast; /** * Create a new command instance. * * @return void */ public function __construct(User $user, Podcast $podcast) { $this->user = $user; $this->podcast = $podcast; } /** * Execute the command. * * @return void */ public function handle() { // Handle the logic to purchase the podcast... event(new PodcastWasPurchased($this->user, $this->podcast)); } }
کنترلر پایه لاراول از
DispatchesCommands
ویژگی جدید استفاده می کند و به شما امکان می دهد دستورات خود را به راحتی برای اجرا ارسال کنید:
$this->dispatch(new PurchasePodcastCommand($user, $podcast));
البته، میتوانید برای کارهایی که به صورت همزمان اجرا میشوند (در صف قرار نمیگیرند) نیز از دستورات استفاده کنید. در واقع، استفاده از دستورات یک راه عالی برای کپسوله کردن وظایف پیچیده ای است که برنامه شما باید انجام دهد. برای اطلاعات بیشتر، مستندات باس فرمان را بررسی کنید .
صف پایگاه داده
اکنون یک
database
درایور صف در لاراول گنجانده شده است که یک درایور صف محلی ساده و محلی را ارائه می دهد که نیازی به نصب بسته اضافی فراتر از نرم افزار پایگاه داده شما ندارد.
برنامه زمانبندی لاراول
در گذشته، توسعهدهندگان برای هر فرمان کنسولی که میخواستند برنامهریزی کنند، یک ورودی Cron ایجاد میکردند. با این حال، این یک سردرد است. زمانبندی کنسول شما دیگر در کنترل منبع نیست، و برای اضافه کردن ورودیهای Cron باید به سرور خود SSH کنید. بیایید زندگی خود را آسان تر کنیم. برنامه زمانبندی فرمان لاراول به شما این امکان را می دهد که به طور روان و واضح برنامه دستورات خود را در لاراول تعریف کنید و تنها یک ورودی Cron در سرور شما مورد نیاز است.
به نظر می رسد این است:
$schedule->command('artisan:command')->dailyAt('15:00');
البته، مستندات کامل را بررسی کنید تا همه چیز را در مورد زمانبندی بدانید!
Tinker / Psysh
این
php artisan tinker
دستور اکنون از
Psysh
توسط جاستین هیلمن، یک REPL قوی تر برای PHP استفاده می کند.
اگر بوریس را در لاراول 4 دوست داشتید، پس حتما عاشق Psysh خواهید شد.
حتی بهتر از آن، روی ویندوز کار می کند!
برای شروع، فقط سعی کنید:
php artisan tinker
DotEnv
لاراول 5 به جای انواع دایرکتوری های پیکربندی محیط گیج کننده و تودرتو، اکنون از DotEnv توسط ونس لوکاس استفاده می کند. این کتابخانه یک راه بسیار ساده برای مدیریت پیکربندی محیط شما ارائه می دهد و تشخیص محیط را در لاراول 5 آسان می کند. برای جزئیات بیشتر، اسناد پیکربندی کامل را بررسی کنید .
لاراول اکسیر
Laravel Elixir، توسط Jeffrey Way، یک رابط روان و گویا برای کامپایل و به هم پیوستن دارایی های شما فراهم می کند. اگر تا به حال با یادگیری Grunt یا Gulp ترسیده اید، دیگر نترسید. Elixir شروع به کار استفاده از Gulp را برای کامپایل Less، Sass و CoffeeScript خود آسان می کند. حتی می تواند تست های شما را برای شما اجرا کند!
برای اطلاعات بیشتر در مورد اکسیر، مستندات کامل را بررسی کنید .
لاراول سوسیالیت
Laravel Socialite یک بسته اختیاری سازگار با Laravel 5.0+ است که احراز هویت کاملاً بدون دردسر را با ارائه دهندگان OAuth فراهم می کند. در حال حاضر Socialite از فیس بوک، توییتر، گوگل و گیت هاب پشتیبانی می کند. در اینجا به نظر می رسد:
public function redirectForAuth(){ return Socialize::with('twitter')->redirect();} public function getUserFromProvider(){ $user = Socialize::with('twitter')->user();}
دیگر ساعتها صرف نوشتن جریانهای احراز هویت OAuth نیست. در چند دقیقه شروع کنید! اسناد کامل دارای تمام جزئیات است.
ادغام Flysystem
لاراول اکنون شامل کتابخانه قدرتمند انتزاعی سیستم فایل Flysystem است که یکپارچه سازی بدون درد با فضای ذخیره سازی ابری محلی، Amazon S3 و Rackspace را ارائه می دهد - همه با یک API یکپارچه و زیبا! ذخیره یک فایل در آمازون S3 اکنون به همین سادگی است:
Storage::put('file.txt', 'contents');
برای اطلاعات بیشتر در مورد ادغام Laravel Flysystem، به مستندات کامل مراجعه کنید .
فرم درخواست ها
لاراول 5.0
درخواست های فرم را
معرفی می کند که
Illuminate\Foundation\Http\FormRequest
کلاس را گسترش می دهد.
این اشیاء درخواستی را می توان با تزریق روش کنترل کننده ترکیب کرد تا یک روش بدون صفحه دیگ برای اعتبارسنجی ورودی کاربر ارائه شود.
بیایید به یک نمونه نگاه کنیم
FormRequest
:
<?php namespace App\Http\Requests; class RegisterRequest extends FormRequest { public function rules() { return [ 'email' => 'required|email|unique:users', 'password' => 'required|confirmed|min:8', ]; } public function authorize() { return true; } }
هنگامی که کلاس تعریف شد، میتوانیم آن را در عملکرد کنترلر خود تایپ کنیم:
public function register(RegisterRequest $request){ var_dump($request->input());}
هنگامی که کانتینر سرویس لاراول تشخیص میدهد که کلاسی که تزریق میکند یک
FormRequest
نمونه است، درخواست
بهطور خودکار اعتبارسنجی
میشود .
این بدان معنی است که اگر اکشن کنترلر شما فراخوانی شود، می توانید با خیال راحت فرض کنید ورودی درخواست HTTP مطابق قوانینی که در کلاس درخواست فرم خود مشخص کرده اید، اعتبارسنجی شده است.
حتی بیشتر، اگر درخواست نامعتبر باشد، یک تغییر مسیر HTTP، که میتوانید آن را سفارشی کنید، به طور خودکار صادر میشود و پیامهای خطا یا به جلسه فلش میشوند یا به JSON تبدیل میشوند.
اعتبار سنجی فرم هرگز ساده تر از این نبوده است.
برای اطلاعات بیشتر در مورد اعتبارسنجی،
اسناد را
FormRequest
بررسی کنید
.
اعتبار سنجی درخواست کنترلر ساده
کنترلر پایه لاراول 5 اکنون شامل یک
ValidatesRequests
ویژگی است.
این ویژگی یک
validate
روش ساده برای اعتبارسنجی درخواست های دریافتی ارائه می دهد.
اگر
FormRequests
برای برنامه شما کمی زیاد است، این را بررسی کنید:
public function createPost(Request $request){ $this->validate($request, [ 'title' => 'required|max:255', 'body' => 'required', ]);}
اگر اعتبار سنجی ناموفق باشد، یک استثنا ایجاد می شود و پاسخ HTTP مناسب به طور خودکار به مرورگر ارسال می شود. خطاهای اعتبارسنجی حتی به جلسه فلش می شود! اگر درخواست یک درخواست AJAX بود، لاراول حتی مراقبت میکند که یک نمایش JSON از خطاهای اعتبارسنجی را برای شما ارسال کند.
برای اطلاعات بیشتر در مورد این روش جدید، مستندات را بررسی کنید .
ژنراتورهای جدید
برای تکمیل ساختار برنامه پیشفرض جدید، دستورات مولد Artisan جدید به چارچوب اضافه شده است.
php artisan list
برای جزئیات بیشتر
مراجعه کنید .
کش پیکربندی
اکنون میتوانید با استفاده از دستور، تمام تنظیمات خود را در یک فایل ذخیره کنید
config:cache
.
سیمفونی واردامپر
تابع محبوب
dd
کمکی، که اطلاعات اشکال زدایی متغیر را تخلیه می کند، برای استفاده از Symfony VarDumper شگفت انگیز ارتقا یافته است.
این خروجی با کد رنگی و حتی جمع شدن آرایه ها را فراهم می کند.
فقط موارد زیر را در پروژه خود امتحان کنید:
dd([1, 2, 3]);
لاراول 4.2
لیست کامل تغییرات برای این نسخه با اجرای
php artisan changes
دستور از نصب 4.2 یا با
مشاهده فایل تغییر در Github
.
این یادداشتها تنها پیشرفتها و تغییرات عمده برای انتشار را پوشش میدهند.
توجه: در طول چرخه انتشار 4.2، بسیاری از رفع اشکالات و بهبودهای کوچک در نسخه های مختلف Laravel 4.1 نقطه گنجانده شد. بنابراین، حتماً لیست تغییرات لاراول 4.1 را نیز بررسی کنید!
PHP 5.4 مورد نیاز
لاراول 4.2 به PHP 5.4 یا بالاتر نیاز دارد. این نیاز ارتقا یافته PHP به ما امکان می دهد از ویژگی های جدید PHP مانند ویژگی ها برای ارائه رابط های گویاتر برای ابزارهایی مانند Laravel Cashier استفاده کنیم . PHP 5.4 همچنین سرعت و عملکرد قابل توجهی را نسبت به PHP 5.3 بهبود می بخشد.
لاراول فورج
Laravel Forge، یک برنامه جدید مبتنی بر وب، راه ساده ای را برای ایجاد و مدیریت سرورهای PHP بر روی ابر انتخابی شما، از جمله Linode، DigitalOcean، Rackspace، و Amazon EC2 ارائه می دهد. با پشتیبانی از پیکربندی خودکار Nginx، دسترسی به کلید SSH، اتوماسیون کار Cron، نظارت بر سرور از طریق NewRelic & Papertrail، "Push To Deploy"، پیکربندی Laravel queue worker و موارد دیگر، Forge ساده ترین و مقرون به صرفه ترین راه را برای راه اندازی همه برنامه های Laravel شما ارائه می دهد.
فایل پیکربندی پیشفرض Laravel 4.2
app/config/database.php
اکنون برای استفاده از Forge بهطور پیشفرض پیکربندی شده است و امکان استقرار راحتتر برنامههای کاربردی جدید را بر روی پلتفرم فراهم میکند.
اطلاعات بیشتر در مورد لاراول فورج را می توانید در وب سایت رسمی فورج بیابید .
خانه لاراول
Laravel Homestead یک محیط Vagrant رسمی برای توسعه برنامه های قوی لاراول و PHP است.
اکثریت قریب به اتفاق نیازهای تامین جعبه ها قبل از بسته بندی جعبه برای توزیع انجام می شود و به جعبه اجازه می دهد بسیار سریع بوت شود.
Homestead شامل Nginx 1.6، PHP 5.6، MySQL، Postgres، Redis، Memcached، Beanstalk، Node، Gulp، Grunt و Bower است.
Homestead شامل یک
Homestead.yaml
فایل پیکربندی ساده برای مدیریت چندین برنامه لاراول در یک جعبه است.
نصب پیشفرض Laravel 4.2 اکنون شامل یک
app/config/local/database.php
فایل پیکربندی است که به گونهای پیکربندی شده است که از پایگاه داده Homestead خارج از جعبه استفاده کند و نصب و پیکربندی اولیه لاراول را راحتتر کند.
اسناد رسمی نیز به روز شده است تا مستندات Homestead را نیز شامل شود .
صندوقدار لاراول
Laravel Cashier یک کتابخانه ساده و گویا برای مدیریت صورتحساب اشتراک با Stripe است. با معرفی لاراول 4.2، اسناد Cashier را به همراه مستندات اصلی لاراول اضافه می کنیم، اگرچه نصب خود مؤلفه هنوز اختیاری است. این نسخه از Cashier رفع اشکالات متعدد، پشتیبانی چند ارزی و سازگاری با آخرین API Stripe را به همراه دارد.
کارگران صف دیمون
دستور Artisan
queue:work
اکنون از
--daemon
گزینهای برای راهاندازی یک کارگر در حالت daemon پشتیبانی میکند، به این معنی که کارگر بدون راهاندازی مجدد فریمورک به پردازش کارها ادامه میدهد.
این منجر به کاهش قابل توجهی در استفاده از CPU به قیمت فرآیند استقرار برنامه کمی پیچیده تر می شود.
اطلاعات بیشتر در مورد کارگران صف دیمون را می توانید در اسناد صف بیابید .
درایورهای API Mail
لاراول 4.2 درایورهای جدید Mailgun و Mandrill API را برای
Mail
توابع معرفی می کند.
برای بسیاری از برنامهها، این روش سریعتر و مطمئنتری برای ارسال ایمیلها نسبت به گزینههای SMTP فراهم میکند.
درایورهای جدید از کتابخانه HTTP Guzzle 4 استفاده می کنند.
صفات حذف نرم
یک معماری بسیار تمیزتر برای "حذف های نرم" و سایر "حوزه های جهانی" از طریق ویژگی های PHP 5.4 معرفی شده است. این معماری جدید امکان ساخت آسانتر ویژگیهای جهانی مشابه و جداسازی تمیزتر نگرانیها را در خود چارچوب فراهم میکند.
اطلاعات بیشتر در مورد جدید را می توان در
مستندات Eloquent
SoftDeletingTrait
یافت
.
ویژگیهای معتبر و قابل یادآوری راحت
نصب پیشفرض Laravel 4.2 اکنون از ویژگیهای ساده برای گنجاندن ویژگیهای مورد نیاز برای واسط کاربری احراز هویت و یادآوری رمز عبور استفاده میکند.
این یک
User
فایل مدل پیش فرض بسیار تمیزتر را از جعبه ارائه می دهد.
"صفحه بندی ساده"
یک روش جدید
simplePaginate
به سازنده پرسش و Eloquent اضافه شده است که به هنگام استفاده از پیوندهای ساده «بعدی» و «قبلی» در نمای صفحهبندی شما امکان پرس و جوهای کارآمدتر را میدهد.
تایید مهاجرت
در تولید، عملیات مهاجرت مخرب اکنون درخواست تأیید می کند.
ممکن است با استفاده از دستور، دستورات بدون هیچ گونه درخواستی اجرا شوند
--force
.
لاراول 4.1
لیست کامل تغییرات
لیست کامل تغییرات برای این نسخه با اجرای
php artisan changes
دستور از نصب 4.1 یا با
مشاهده فایل تغییر در Github
.
این یادداشتها تنها پیشرفتها و تغییرات عمده برای انتشار را پوشش میدهند.
کامپوننت جدید SSH
یک جزء کاملاً جدید
SSH
با این نسخه معرفی شده است.
این ویژگی به شما اجازه می دهد تا به راحتی SSH را در سرورهای راه دور انجام دهید و دستورات را اجرا کنید.
برای کسب اطلاعات بیشتر، به
مستندات مؤلفه SSH
مراجعه کنید .
دستور جدید
php artisan tail
از مولفه SSH جدید استفاده می کند.
برای اطلاعات بیشتر، به
tail
مستندات فرمان
مراجعه کنید .
بوریس در تینکر
php artisan tinker
اگر سیستم شما از آن پشتیبانی کند، اکنون دستور از Boris REPL استفاده
می
کند
.
برای استفاده از این ویژگی باید پسوندها
readline
و
pcntl
PHP نصب شوند.
اگر این پسوندها را ندارید، از پوسته 4.0 استفاده می شود.
بهبودهای الکوئنت
رابطه جدیدی
hasManyThrough
به Eloquent اضافه شده است.
برای یادگیری نحوه استفاده از آن، به
مستندات Eloquent
مراجعه کنید .
روش جدیدی
whereHas
نیز معرفی شده است تا امکان
بازیابی مدلها را بر اساس محدودیتهای رابطه
فراهم کند .
اتصالات خواندن / نوشتن پایگاه داده
مدیریت خودکار اتصالات خواندن/نوشتن جداگانه اکنون در سراسر لایه پایگاه داده، از جمله سازنده query و Eloquent در دسترس است. برای اطلاعات بیشتر، به مستندات مراجعه کنید .
اولویت صف
اولویت های صف اکنون با ارسال یک لیست محدود شده با کاما به
queue:listen
دستور پشتیبانی می شوند.
مدیریت کار در صف ناموفق
امکانات صف اکنون شامل مدیریت خودکار کارهای ناموفق هنگام استفاده از
--tries
کلید جدید روشن است
queue:listen
.
اطلاعات بیشتر در مورد رسیدگی به کارهای ناموفق را می توان در
اسناد صف
پیدا کرد .
برچسب های کش
«بخشهای» کش با «برچسبها» جایگزین شدهاند. تگ های کش به شما این امکان را می دهند که چندین "برچسب" را به یک آیتم کش اختصاص دهید و همه موارد اختصاص داده شده به یک تگ را پاک کنید. اطلاعات بیشتر در مورد استفاده از تگهای کش را میتوانید در اسناد کش پیدا کنید .
یادآوری های رمز عبور انعطاف پذیر
موتور یادآوری رمز عبور برای ارائه انعطافپذیری بیشتر توسعهدهنده در هنگام تأیید گذرواژهها، چشمک زدن پیامهای وضعیت به جلسه، و غیره تغییر کرده است. برای اطلاعات بیشتر در مورد استفاده از موتور یادآور رمز عبور پیشرفته، به مستندات مراجعه کنید .
موتور مسیریابی بهبود یافته
لاراول 4.1 دارای یک لایه مسیریابی کاملاً بازنویسی شده است. API یکسان است. با این حال، ثبت مسیرها 100٪ سریعتر از 4.0 است. کل موتور تا حد زیادی ساده شده است، و وابستگی به Symfony Routing به کامپایل کردن عبارات مسیر به حداقل رسیده است.
موتور جلسه بهبود یافته
با این نسخه، ما همچنین یک موتور جلسه کاملاً جدید را معرفی می کنیم. مشابه پیشرفتهای مسیریابی، لایه جلسه جدید لاغرتر و سریعتر است. ما دیگر از امکانات مدیریت جلسه Symfony (و در نتیجه PHP) استفاده نمی کنیم و از یک راه حل سفارشی استفاده می کنیم که نگهداری آن ساده تر و راحت تر است.
دکترین DBAL
اگر از تابع در مهاجرت خود استفاده می کنید
renameColumn
، باید
doctrine/dbal
وابستگی را به فایل خود اضافه کنید
composer.json
.
این بسته دیگر به صورت پیش فرض در لاراول موجود نیست.