Laravel 5.6 Yükseltme Kılavuzu
5,5 den 5.6.0 yükseltme
Tahmini yükseltme süresi: 10-30 dakika
Her türlü kırılma değişikliğini belgelemek için çalışacağız. Bu değişikliklerin bazıları çerçevenin belirsiz bölümlerinde olduğundan bu değişikliklerin yalnızca bir bölümü uygulamanızı etkileyebilir.
Php
Laravel 5,6 gerektirir PHP 7.1.3 veya daha yüksek.
Bağımlılıkları güncelleştiriliyor
Laravel/Framework bağımlılığını 5,6. * ve sizin fideloper/proxy bağımlılığı için ~ 4,0 Composer. JSON dosyasına güncelleyin.
Ayrıca, aşağıdaki ilk taraf Laravel paketleri kullanıyorsanız, bunları en son sürüme yükseltmelisiniz:
Dusk (yükseltme ~ 3,0)
Pasaport (yükseltme ~ 5,0)
Scout (yükseltme ~ 4,0)
Tabii ki, uygulama tarafından tüketilen herhangi bir üçüncü parti paketleri incelemek ve Laravel 5,6 desteği için uygun sürümünü kullandığınızdan emin unutmayın.
Symfony 4
Laravel tarafından kullanılan tüm temel symfony bileşenleri symfony ~ 4,0 sürüm serisine yükseltilmiştir. Doğrudan etkileşim symfony bileşenleri uygulamanız içinde symfony değişiklik günlüğünü gözden geçirmeniz gerekir.
PHPUnit
Uygulamanızın PHPUnit/PHPUnit bağımlılığı ~ 7,0 için güncelleştirmeniz gerekir.
Arrays
ARR:: Wrap yöntemi
Geçirerek null için ARR:: Wrap yöntemi şimdi boş bir dizi döndürür.
Artisan
Optimize komutu
Daha önce onaylanmamış optimize esnaf komutu kaldırılmıştır. OPcache de dahil olmak üzere php ‘nin kendisinin son iyileştirmeleri ile optimize komutu artık herhangi bir ilgili performans avantajı sağlar. Bu nedenle, php Artisan, Composer. JSON dosyası içinde betikleri optimize kaldırabilirsiniz.
Blade
HTML varlık kodlaması
Önceki sürümlerinde Laravel, Blade (ve e yardımcı) değil çift kodlama HTML varlıklar. Bu temel htmlspecialchars işlevinin varsayılan davranışı değildi ve içerik işlenirken veya JavaScript çerçeveleri için satır içi JSON içeriği geçirerek beklenmeyen bir davranışa yol açabilir.
Laravel 5,6, Blade ve e Helper varsayılan olarak özel karakterleri kodlamak çift olacaktır. Bu özellikleri temel htmlspecialchars php fonksiyonunun varsayılan davranışı ile hizalamaya getirir. Çift kodlamayı önlemenin önceki davranışını korumak isterseniz, Blade:: withoutDoubleEncoding yöntemini kullanabilirsiniz:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Blade::withoutDoubleEncoding();
}
}
Cache
Oran sınırlayıcı tooManyAttempts yöntemi
Kullanılmayan $decayMinutes parametresi bu yöntemin imzasından kaldırıldı. Kendi uygulamanız ile bu yöntemi geçersiz kılarak, ayrıca bağımsız değişken yöntemin imzası kaldırmanız gerekir.
Veritabanı
Morph sütunlarının indeks sırası
Morphs geçiş yöntemi tarafından oluşturulan sütunların indeksleme daha iyi performans için tersine çevrilmiştir. Geçişler birinde morphs yöntemini kullanıyorsanız, geçişin aşağı yöntemini çalıştırmayı denerken bir hata alabilirsiniz. Uygulama hala geliştirmede ise, geçiş: Fresh komutunu sıfırdan veritabanını yeniden oluşturmak için kullanabilirsiniz. Uygulama üretimde ise, bir açık dizin adı geçmesi morphs yöntemi.
MigrationRepositoryInterface yöntem ekleme
Yeni bir getMigrationsBatches yöntemi eklenmiştir MigrationRepositoryInterface. Bu sınıfın kendi uygulamasını tanımladığınız çok benzer bir olay, uygulamanız için bu yöntemi eklemelisiniz. Varsayılan uygulama çerçevesinde bir örnek olarak görüntüleyebilirsiniz.
Eloquent
Birkaçıdır yöntemi
Bu birkaçıdır yöntemi artık public yerine Protected.
Hashing
Yeni konfigürasyon dosyası
Tüm karma Yapılandırma şimdi kendi yapılandırma/hashing. php yapılandırma dosyası içinde ev sahibidir. Varsayılan yapılandırma dosyasının bir kopyasını kendi uygulamanıza yerleştirmeniz gerekir. Büyük olasılıkla, varsayılan sürücünüz olarak bcrypt sürücüsünü tutmanız gerekir. Ancak argon da destekleniyor.
Yardımcıları
E Yardımcısı
Önceki sürümlerinde Laravel, Blade (ve e yardımcı) değil çift kodlama HTML varlıklar. Bu temel htmlspecialchars işlevinin varsayılan davranışı değildi ve içerik işlenirken veya JavaScript çerçeveleri için satır içi JSON içeriği geçirerek beklenmeyen bir davranışa yol açabilir.
Laravel 5,6, Blade ve e Helper varsayılan olarak özel karakterleri kodlamak çift olacaktır. Bu özellikleri temel htmlspecialchars php fonksiyonunun varsayılan davranışı ile hizalamaya getirir. Çift kodlamayı önlemenin önceki davranışını korumak istiyorsanız, e yardımcı için ikinci bağımsız değişken olarak false iletebilirsiniz:
<?php echo e($string, false); ?>
Günlük
Yeni konfigürasyon dosyası
Tüm günlük yapılandırma şimdi kendi yapılandırma/günlük. php yapılandırma dosyası içinde ev sahibidir. Varsayılan yapılandırma dosyasının bir kopyasını kendi uygulamanıza yerleştirmeli ve ayarları uygulamanızın gereksinimlerine göre ayarlamanız gerekir.
Log ve LOG_LEVEL yapılandırma seçenekleri config/App. php yapılandırma dosyasından kaldırılmış olabilir.
Configure\Monolog\Using yöntemi
Kullanıyorsanız, configureMonologUsing yöntemi özelleştirmek için monolog örneği uygulamanız için şimdi özel bir günlük kanalı oluşturmalısınız. Özel kanalları oluşturma hakkında daha fazla bilgi için tam günlük belgelerini denetleyin.
Günlük yazıcı sınıfı
Illuminate\Log\Writer sınıfı Illuminate\Log\Logger. için yeniden adlandırıldı Açıkça türü-bu sınıf uygulamanızın sınıflarından biri bağımlılığı olarak ipucu olarak varsa, yeni adı sınıf başvuru dddgüncelleştirmeniz gerekir. Veya, alternatif olarak, türü-Ipucu standartlaştırılmış Psr\Log\LoggerInterface arabirimi yerine önemle düşünmelisiniz.
Illuminate\Contracts\Logging\Log arabirimi
Bu arabirim PsrLogLoggerInterface arabiriminin toplam çoğaltılması olduğundan bu arabirim kaldırılmıştır. Yazmanız gerekir-ipucu PsrLogLoggerInterface arabirimi yerine.
Posta
withSwiftMessage geri aramalar
Önceki sürümlerinde Laravel, SWIFT iletileri özelleştirme geri aramaları kullanılarak kayıtlı withSwiftMessage içerik zaten kodlanmış ve iletiye eklendikten sonra çağrıldı. Bu geri aramalar şimdi içerik eklenmeden önce çağrılır, hangi kodlama veya diğer ileti seçenekleri gerektiği gibi özelleştirmenize olanak sağlar.
Sayfalandırma
Bootstrap 4
Sayfalandırma bağlantıları tarafından oluşturulan Paginator şimdi varsayılan Bootstrap 4. Paginator Bootstrap 3 bağlantıları oluşturmak için talimat vermek için Paginator:: useBootstrapThree yöntemi, AppServiceProvider önyükleme yöntemini çağırın:
<?php
namespace App\Providers;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrapThree();
}
}
Resources
Özgün özellik
Özgün kaynak yanıtları özelliği artık bir JSON dize/dizi yerine özgün modele ayarlanır. Bu test sırasında yanıtın modelinin daha kolay incelenmesi için izin verir.
Yönlendirme
Yeni oluşturulan modelleri döndürme
Yeni oluşturulan anlamlı bir modelini doğrudan bir yoldan döndürerek, yanıt durumu şimdi otomatik olarak 200 yerine 201 olarak ayarlanır. Uygulamanızın testlerinden herhangi biri açıkça bir 200 yanıtı beklenirse, bu testlerin 201 beklediğiniz güncelleştirilmesi gerekir.
Güvenilir yakınlık
Symfony HttpFoundation güvenilir proxy işlevselliğinde yatan değişiklikler nedeniyle, uygulamanızın App\Http\Middleware\TrustProxies middleware için hafif değişiklikler yapılmalıdır.
Daha önce bir dizi olan $Headers özelliği artık birkaç farklı değer kabul eden bir bit özelliğidir. Örneğin, iletilen tüm üstbilgilere güvenmek için $Headers özelliğini aşağıdaki değere güncelleştirebilirsiniz:
use Illuminate\Http\Request;
/**
* The headers that should be used to detect proxies.
*
* @var string
*/
protected $headers = Request::HEADER_X_FORWARDED_ALL;
Kullanılabilir $Headers değerleri hakkında daha fazla bilgi için, güvenen proxy ‘lerinin tam belgelerine göz atın.
Validation
ValidatesWhenResolved arabirimi
Validate yöntemi ValidatesWhenResolved arabirim/özellik $Request-> Validate () yöntemi ile çakışmaları önlemek için yeniden adlandırıldı.
Miscellaneous
Ayrıca Laravel/Laravel GitHub deposundaki değişiklikleri görüntülemeye de teşvik ediyoruz. Bu değişikliklerin birçoğu gerekli olmamakla birlikte, bu dosyaları uygulamanızla eşitlenmiş olarak tutmak isteyebilirsiniz. Bu değişikliklerin bazıları bu yükseltme kılavuzunda ele alınacaktır, ancak diğerleri, yapılandırma dosyaları veya açıklamalar gibi değişiklikler gibi olmayacaktır. Değişiklikleri GitHub karşılaştırma aracıyla kolayca görüntüleyebilirsiniz ve sizin için hangi güncelleştirmelerin önemli olduğunu belirleyebilirsiniz.