{note} Chúng tôi sẽ cố gắng ghi lại mọi thay đổi có thể xảy ra. Vì một số thay đổi này nằm trong các phần ẩn của framework, nên chỉ một phần trong những thay đổi này có thể thực sự ảnh hưởng đến application của bạn.
Cập nhật library laravel/framework
của bạn thành 5.8.*
trong file composer.json
của bạn.
Tiếp theo, kiểm tra bất kỳ package bên thứ 3 nào mà được ứng dụng của bạn sử dụng và xác nhận rằng bạn đang sử dụng phiên bản phù hợp của package để hỗ trợ Laravel 5.8.
Application
Contractenvironment
MethodLikelihood Of Impact: Very Low
Định dạng phương thức environment
của contract Illuminate\Contracts\Foundation\Application
đã bị thay đổi. Nếu bạn đang implement contract này trong ứng dụng của bạn, bạn nên cập nhật định dạng mới của phương thức đó:
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
*/
public function environment(...$environments);
Likelihood Of Impact: Very Low
Các phương thức bootstrapPath
, configPath
, databasePath
, environmentPath
, resourcePath
, storagePath
, resolveProvider
, bootstrapWith
, configurationIsCached
, detectEnvironment
, environmentFile
, environmentFilePath
, getCachedConfigPath
, getCachedRoutesPath
, getLocale
, getNamespace
, getProviders
, hasBeenBootstrapped
, loadDeferredProviders
, loadEnvironmentFrom
, routesAreCached
, setLocale
, shouldSkipMiddleware
và terminate
đã được thêm vào contract Illuminate\Contracts\Foundation\Application
.
Đây là trường hợp rất khó xảy ra, nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
Likelihood Of Impact: Low
Khi người dùng yêu cầu một link để reset mật khẩu của họ, Laravel sẽ tạo một URL bằng cách sử dụng helper route
để tạo URL cho route có tên là password.reset
. Khi sử dụng Laravel 5.7, token được truyền tới helper route
mà không có tên cụ thể, như sau:
route('password.reset', $token);
Khi sử dụng Laravel 5.8, token được truyền tới helper route
dưới dạng một tham số cụ thể:
route('password.reset', ['token' => $token]);
Do đó, nếu bạn đang định nghĩa route password.reset
của riêng bạn, bạn nên đảm bảo rằng nó có chứa tham số {token}
trong URI của nó.
Likelihood Of Impact: High
Độ dài bắt buộc của mật khẩu khi chọn hoặc reset một mật khẩu đã được thay đổi thành tám ký tự. Bạn nên cập nhật bất kỳ quy tắc hoặc logic validation nào trong ứng dụng của bạn để phù hợp với độ dài mặc định tám ký tự này.
Nếu bạn cần giữ nguyên độ dài sáu ký tự trước đó hoặc một độ dài khác, bạn có thể extend class Illuminate\Auth\Passwords\PasswordBroker
và ghi đè phương thức validatePasswordWithDefaults
bằng logic của bạn.
Likelihood Of Impact: Very High
Để cho phép thời gian hết hạn chi tiết hơn khi lưu trữ các item và tuân thủ theo tiêu chuẩn bộ nhớ cache PSR-16, thời gian tồn tại của item trong bộ nhớ cache đã thay đổi từ phút thành giây. Các phương thức put
, putMany
, add
, remember
và setDefaultCacheTime
của class Illuminate\Cache\Repository
và các class extend của nó, cũng như phương thức put
của mỗi cache store đã được cập nhật với thay đổi này. Hãy xem PR này để biết thêm thông tin.
Nếu bạn đang truyền một số nguyên cho bất kỳ phương thức nào trong số này, thì bạn nên cập nhật code của bạn để đảm bảo rằng bạn đang truyền số giây mà bạn muốn item vẫn còn tồn tại trong bộ nhớ cache. Ngoài ra, bạn có thể truyền một instance DateTime
cho biết khi nào item sẽ hết hạn:
// Laravel 5.7 - Store item for 30 minutes...
Cache::put('foo', 'bar', 30);
// Laravel 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', 30);
// Laravel 5.7 / 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', now()->addSeconds(30));
{tip} Thay đổi này làm cho hệ thống bộ cache của Laravel hoàn toàn tuân thủ theo tiêu chuẩn thư viện bộ nhớ cache PSR-16.
Likelihood Of Impact: Medium
Ngoài giá trị trả về được thay đổi ở đây, tham số TTL của phương thức put
, putMany
và add
trong class Illuminate\Cache\Repository
đã được cập nhật để phù hợp hơn với thông số kỹ thuật của PSR-16. Hành vi mới cung cấp một giá trị mặc định là null
, do đó, khi bạn gọi phương thức mà không truyền vào TTL, thì sẽ dẫn đến việc lưu vĩnh viễn item đó vào trong bộ nhớ cache. Ngoài ra, nếu bạn lưu các item trong bộ nhớ cache mà có giá trị TTL từ 0 trở xuống, thì item đó sẽ xóa khỏi bộ nhớ đệm. Xem PR này để biết thêm thông tin.
Event KeyWritten
cũng đã được cập nhật với những thay đổi này.
Likelihood Of Impact: High
Trong Laravel 5.7 và các phiên bản trước của Laravel, tính năng "atomic lock" được cung cấp bởi một số driver cache có thể có hành vi mà bạn không mong muốn đó là việc giải phóng sớm các khóa đang lock.
Ví dụ: Client A có được khóa foo
với thời hạn 10 giây. Client A mất 20 giây để hoàn thành công việc của nó. Khóa được hệ thống bộ nhớ cache tự động giải phóng sau 10 giây kể từ thời gian xử lý của Client A. Client B có được khóa foo
. Client A sau 10 giây cũng hoàn thành công việc của nó và giải phóng tiếp khóa foo
, và vô tình giải phóng luôn khóa mà Client B đang giữ. Và do đó, một Client C khác có thể nhận được khóa.
Để giảm thiểu những trường hợp như thế này, các khóa hiện được tạo bằng một "scope token" cho phép framework đảm bảo rằng trong các trường hợp bình thường, chỉ có chủ sở hữu của khóa mới có thể giải phóng được khóa.
Nếu bạn đang sử dụng phương thức Cache::lock()->get(Closure)
để tương tác với các khóa, thì không cần thay đổi gì:
Cache::lock('foo', 10)->get(function () {
// Lock will be released safely automatically...
});
Tuy nhiên, nếu bạn đang gọi Cache::lock()->release()
theo cách thủ công, thì bạn phải cập nhật code của bạn để duy trì một instance của khóa. Sau đó, sau khi thực hiện xong tác vụ của bạn, bạn có thể gọi phương thức release
trên cùng một instance của khóa. Ví dụ:
if (($lock = Cache::lock('foo', 10))->get()) {
// Perform task...
$lock->release();
}
Thỉnh thoảng, bạn có thể muốn có được một khóa trong một process và giải phóng nó trong một process khác. Ví dụ: bạn có thể muốn có được khóa trong một web request và muốn mở khóa khi kết thúc một queued job được kích hoạt bởi chính request đó. Trong trường hợp này, bạn nên truyền vào một "owner token" trong scope của khóa cho queued job để job có thể khởi tạo lại khóa đó bằng cách sử dụng token được truyền vào:
// Within Controller...
$podcast = Podcast::find(1);
if (($lock = Cache::lock('foo', 120))->get()) {
ProcessPodcast::dispatch($podcast, $lock->owner());
}
// Within ProcessPodcast Job...
Cache::restoreLock('foo', $this->owner)->release();
Nếu bạn muốn giải phóng khóa mà bỏ qua owner hiện tại của khoá, bạn có thể sử dụng phương thức forceRelease
:
Cache::lock('foo')->forceRelease();
Repository
and Store
ContractsLikelihood Of Impact: Very Low
Để tuân thủ hoàn toàn tiêu chuẩn PSR-16
, các giá trị được trả về của phương thức put
và forever
của contract Illuminate\Contracts\Cache\Repository
và các giá trị được trả về của put
, putMany
và phương thức forever
của contract Illuminate\Contracts\Cache\Store
đã được thay đổi từ void
thành bool
.
Likelihood Of Impact: Medium
Laravel hiện hỗ trợ cả Carbon 1 và Carbon 2; do đó, nếu Composer không phát hiện thấy các vấn đề về tương thích với bất kỳ package nào trong project của bạn, nó sẽ cố gắng thử nâng cấp lên Carbon 2.0. Vui lòng xem lại hướng dẫn nâng cấp cho Carbon 2.0.
add
MethodLikelihood Of Impact: Very Low
Phương thức add
đã được di chuyển từ class Eloquent collection sang class base collection. Nếu bạn đang mở rộng Illuminate\Support\Collection
và class mở rộng của bạn có phương thức add
, thì hãy đảm bảo là định dạng của phương thức này khớp với class cha của nó:
public function add($item);
firstWhere
MethodLikelihood Of Impact: Very Low
Định dạng của phương thức firstWhere
đã được thay đổi để khớp với định dạng của phương thức where
. Nếu bạn đang ghi đè phương thức này, bạn nên cập nhật lại định dạng phương thức để khớp với class cha của nó:
/**
* Get the first item by the given key value pair.
*
* @param string $key
* @param mixed $operator
* @param mixed $value
* @return mixed
*/
public function firstWhere($key, $operator = null, $value = null);
Kernel
ContractLikelihood Of Impact: Very Low
Phương thức terminate
đã được thêm vào contract Illuminate\Contracts\Console\Kernel
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
Likelihood Of Impact: Medium
Phương thức tagged
của container bây giờ sẽ sử dụng PHP generator để khởi tạo lazy-instantiate cho các service với một tag được cho. Điều này giúp cải thiện hiệu suất nếu bạn không sử dụng mọi service được gắn thẻ.
Bởi vì sự thay đổi này, nên phương thức tagged
bây giờ sẽ trả về một iterable
thay vì một array
. Nếu bạn đang khai báo giá trị trả về của phương thức này, thì bạn nên đảm bảo là khai báo của bạn được thay đổi thành iterable
.
Ngoài ra, không còn có thể truy cập trực tiếp vào một tagged service bằng giá trị array offset, chẳng hạn như $container->tagged('foo')[0]
.
resolve
MethodLikelihood Of Impact: Very Low
Phương thức resolve
bây giờ sẽ chấp nhận một tham số boolean mới cho biết liệu các event(resolve callback) có nên được chạy / thực thi trong quá trình khởi tạo một đối tượng hay không. Nếu bạn đang ghi đè phương thức này, bạn nên cập nhật lại định dạng phương thức để khớp với class cha của nó:
addContextualBinding
MethodLikelihood Of Impact: Very Low
Phương thức addContextualBinding
đã được thêm vào contract Illuminate\Contracts\Container\Container
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
tagged
MethodLikelihood Of Impact: Low
Định dạng của phương thức tagged
đã được thay đổi và bây giờ, nó trả về một iterable
thay vì một array
. Nếu bạn đã khai báo trong code của bạn một tham số nào đó nhận vào giá trị trả về của phương thức này là array
, thì bạn nên sửa khai báo đó thành iterable
.
flush
MethodLikelihood Of Impact: Very Low
Phương thức flush
đã được thêm vào contract Illuminate\Contracts\Container\Container
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
Likelihood Of Impact: Low
Query builder bây giờ sẽ trả về các giá trị JSON chưa được trích dẫn khi sử dụng MySQL và MariaDB. Hành vi này phù hợp với các cơ sở dữ liệu được hỗ trợ khác:
$value = DB::table('users')->value('options->language');
dump($value);
// Laravel 5.7...
'"en"'
// Laravel 5.8...
'en'
Do đó, toán tử ->>
không còn được hỗ trợ.
Likelihood Of Impact: Medium
Kể từ phiên bản Laravel 5.8, phiên bản SQLite cũ nhất được hỗ trợ là SQLite 3.7.11. Nếu bạn đang sử dụng phiên bản SQLite cũ hơn, thì bạn nên cập nhật phiên bản mới (khuyến cáo nên sử dụng SQLite 3.8.8+).
bigIncrements
Likelihood Of Impact: None
Kể từ phiên bản Laravel 5.8, mặc định, migration sẽ sử dụng phương thức bigIncrements
trên các cột ID. Trước đây, các cột ID được tạo bằng phương thức increments
.
Điều này sẽ không ảnh hưởng đến bất kỳ code nào đang hiện có trong project của bạn; tuy nhiên, hãy lưu ý rằng các cột khóa ngoại phải cùng loại với cột ID. Do đó, một cột được tạo bằng phương thức increments
không thể tham chiếu đến một cột được tạo bằng phương thức bigIncrements
.
Likelihood Of Impact: Medium
Kể từ phiên bản Laravel 5.8, các tên model có nhiều từ mà kết thúc của nó bằng một từ số nhiều bất quy tắc, thì bây giờ sẽ được số nhiều hoá một cách chính xác.
// Laravel 5.7...
App\Feedback.php -> feedback (correctly pluralized)
App\UserFeedback.php -> user_feedbacks (incorrectly pluralized)
// Laravel 5.8
App\Feedback.php -> feedback (correctly pluralized)
App\UserFeedback.php -> user_feedback (correctly pluralized)
Nếu bạn có một model đã được số nhiều hóa không chính xác, bạn có thể tiếp tục sử dụng tên bảng cũ bằng cách định nghĩa thuộc tính $table
trên model của bạn:
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user_feedbacks';
Nếu bạn đã định nghĩa một quan hệ nhiều-nhiều sử dụng model pivot tùy chỉnh và model pivot đó có khóa chính tự động tăng, bạn nên đảm bảo là class model pivot tùy chỉnh của bạn đã định nghĩa thuộc tính incrementing
là true
.
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = true;
loadCount
MethodLikelihood Of Impact: Low
Phương thức loadCount
đã được thêm vào class base Illuminate\Database\Eloquent\Model
. Nếu ứng dụng của bạn cũng định nghĩa một phương thức loadCount
, nó có thể conflict với định nghĩa của Eloquent.
originalIsEquivalent
MethodLikelihood Of Impact: Very Low
Phương thức originalIsEquivalent
của trait Illuminate\Database\Eloquent\Concerns\HasAttributes
đã được thay đổi từ protected
thành public
.
deleted_at
PropertyLikelihood Of Impact: Low
Thuộc tính delete_at
bây giờ sẽ được tự động truyền sang một instance Carbon
khi model Eloquent của bạn sử dụng trait Illuminate\Database\Eloquent\SoftDeletes
. Bạn có thể ghi đè hành vi này bằng cách tạo một accessor tùy chỉnh của bạn cho thuộc tính đó hoặc là thêm thủ công vào thuộc tính casts
:
protected $casts = ['deleted_at' => 'string'];
getForeignKey
& getOwnerKey
MethodsLikelihood Of Impact: Low
Các phương thức getForeignKey
, getQualifiedForeignKey
và getOwnerKey
của quan hệBelongsTo
đã được đổi tên thành getForeignKeyName
, getQualifiedForeignKeyName
và getOwnerKeyName
, tên phương thức mới này làm cho tên phương thức nhất quán với các quan hệ khác do Laravel cung cấp .
Likelihood Of Impact: High
Package phpdotenv được sử dụng để phân tích cú pháp file .env
đã phát hành một phiên bản mới, có thể ảnh hưởng đến kết quả trả về từ helper env
. Cụ thể, ký tự #
trong một giá trị sẽ không được trích dẫn, thì bây giờ sẽ được coi là một comment thay vì là một phần của giá trị:
Hành vi trước đây:
ENV_VALUE=foo#bar
env('ENV_VALUE'); // foo#bar
Hành vi mới:
ENV_VALUE=foo#bar
env('ENV_VALUE'); // foo
Để duy trì hành vi trước đó, bạn có thể set các giá trị môi trường trong dấu nháy:
ENV_VALUE="foo#bar"
env('ENV_VALUE'); // foo#bar
Để biết thêm thông tin, vui lòng tham khảo hướng dẫn nâng cấp của phpdotenv.
fire
MethodLikelihood Of Impact: Low
Phương thức fire
(không được dùng trong Laravel 5.4) của class Illuminate\Events\Dispatcher
đã bị xóa.
Thay vào đó, bạn có thể sử dụng phương thức dispatch
.
ExceptionHandler
ContractLikelihood Of Impact: Low
Phương thức shouldReport
đã được thêm vào contract Illuminate\Contracts\Debug\ExceptionHandler
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
renderHttpException
MethodLikelihood Of Impact: Low
Định dạng của phương thức renderHttpException
trong class Illuminate\Foundation\Exceptions\Handler
đã được thay đổi. Nếu bạn đang ghi đè phương thức này trong exception handler của bạn, bạn nên cập nhật định dạng mới của phương thức để khớp với class cha của nó:
/**
* Render the given HttpException.
*
* @param \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e
* @return \Symfony\Component\HttpFoundation\Response
*/
protected function renderHttpException(HttpExceptionInterface $e);
Likelihood Of Impact: High
Nếu bạn đã export các component mail Markdown của Laravel bằng lệnh vendor:publish
, bạn nên đổi tên thư mục /resources/views/vendor/mail/markdown
thành /resources/views/vendor/mail/text
.
Ngoài ra, phương thức markdownComponentPaths
đã được đổi tên thành textComponentPaths
. Nếu bạn đang ghi đè phương thức này, bạn nên cập nhật lại định dạng phương thức để khớp với class cha của nó:
PendingMail
ClassLikelihood Of Impact: Very Low
Các phương thức send
, sendNow
, queue
, later
và fill
của class Illuminate\Mail\PendingMail
đã được thay đổi để chấp nhận một instance Illuminate\Contracts\Mail\Mailable
thay vì một lluminate\Mail\Mailable
. Nếu bạn đang ghi đè các phương thức này, bạn nên cập nhật lại định dạng phương thức để khớp với class cha của nó:
Likelihood Of Impact: Medium
Laravel 5.8 cung cấp hỗ trợ cho bản phát hành ~4.0
của thư viện Pheanstalk queue. Nếu bạn đang sử dụng thư viện Pheanstalk trong ứng dụng của bạn, vui lòng nâng cấp thư viện của bạn lên bản phát hành ~4.0
thông qua Composer.
Job
ContractLikelihood Of Impact: Very Low
Phương thức isReleased
, hasFailed
và markAsFailed
đã được thêm vào contract Illuminate\Contracts\Queue\Job
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
Job::failed
& FailingJob
ClassLikelihood Of Impact: Very Low
Khi một queued job bị thất bại trong Laravel 5.7, queue worker sẽ thực thi phương thức FailingJob::handle
. Trong Laravel 5.8, logic có trong class FailingJob
đã được chuyển sang phương thứcfail
trên chính class job đó. Do đó, một phương thức fail
đã được thêm vào contract Illuminate\Contracts\Queue\Job
.
Class Illuminate\Queue\Jobs\Job
sẽ chứa việc implementation của phương thức fail
và bạn sẽ không cần thay đổi code của bạn. Tuy nhiên, nếu bạn đang xây dựng một queue driver tùy chỉnh sử dụng class job không extend class job do Laravel cung cấp, thì bạn nên implement phương thức fail
theo cách thủ công trong class job tùy chỉnh của bạn. Bạn có thể tham khảo class job của Laravel như là một implement mẫu.
Thay đổi này cho phép queue driver tùy chỉnh có nhiều quyền kiểm soát hơn đối với quá trình xóa job.
Likelihood Of Impact: Very Low
Sử dụng tính năng "blocking pop" của Redis queue driver hiện đã an toàn. Trước đây, có một khả năng nhỏ là queued job có thể bị mất nếu server hoặc worker của Redis gặp sự cố vào cùng thời điểm với lúc job được lấy ra. Để làm cho chức năng blocking pop được an toàn, thì một danh sách Redis mới với hậu tố là :notify
được tạo cho mỗi queue của Laravel.
TransformsRequest
MiddlewareLikelihood Of Impact: Low
Phương thức transform
của middleware Illuminate\Foundation\Http\Middleware\TransformsRequest
bây giờ sẽ nhận vào được tên "đầy đủ" của một khóa input trong request khi input là một mảng:
'employee' => [
'name' => 'Taylor Otwell',
],
/**
* Transform the given value.
*
* @param string $key
* @param mixed $value
* @return mixed
*/
protected function transform($key, $value)
{
dump($key); // 'employee.name' (Laravel 5.8)
dump($key); // 'name' (Laravel 5.7)
}
UrlGenerator
ContractLikelihood Of Impact: Very Low
Phương thức previous
đã được thêm vào contract Illuminate\Contracts\Routing\UrlGenerator
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
cachedSchema
Property Of Illuminate\Routing\UrlGenerator
Likelihood Of Impact: Very Low
Tên thuộc tính $cachedSchema
(không được dùng trong Laravel 5.7
) của class Illuminate\Routing\UrlGenerator
đã được đổi thành $cachedScheme
.
StartSession
MiddlewareLikelihood Of Impact: Very Low
Logic session persistence đã được chuyển từ phương thức terminate()
sang phương thức handle()
. Nếu bạn đang ghi đè một hoặc cả hai phương thức này, bạn nên cập nhật lại chúng để phản ánh những thay đổi này.
Likelihood Of Impact: Medium
Tất cả các global helper array_*
và str_*
sẽ không được dùng nữa. Bạn nên sử dụng trực tiếp các phương thức từ class Illuminate\Support\Arr
và Illuminate\Support\Str
.
Tác động của thay đổi này được đánh dấu là medium
vì những helper này đã được chuyển sang package laravel/helpers, cung cấp một lớp tương thích cho tất cả các phương thức global helper trong xử lý mảng và chuỗi.
Nếu bạn chọn cập nhật các view trong ứng dụng Laravel của bạn để sử dụng các phương thức dựa trên class, bạn nên xóa các view đã được biên dịch của bạn để có thể vẫn sử dụng được global helper:
php artisan view:clear
Likelihood Of Impact: Medium
Thuộc tính boolean defer
trong service provider đã được sử dụng để cho biết liệu provider có bị hoãn lại hay không đã không còn được sử dụng. Để đánh dấu một service provider là trì hoãn, provider đó nên implement contract Illuminate\Contracts\Support\DeferrableProvider
.
env
HelperLikelihood Of Impact: Low
Trước đây, helper env
có thể lấy ra được các giá trị của biến môi trường mà đã được thay đổi trong lúc runtime. Trong Laravel 5.8, helper env
xử lý các biến môi trường sẽ là cố định. Nếu bạn muốn thay đổi một biến môi trường trong lúc runtime, hãy xem xét sử dụng giá trị config, nó có thể được lấy ra được bằng helper config
:
Hành vi trước đây:
dump(env('APP_ENV')); // local
putenv('APP_ENV=staging');
dump(env('APP_ENV')); // staging
Hành vi mới:
dump(env('APP_ENV')); // local
putenv('APP_ENV=staging');
dump(env('APP_ENV')); // local
setUp
& tearDown
MethodsCác phương thức setUp
và tearDown
bây giờ sẽ bắt buộc kiểu trả về void:
protected function setUp(): void
protected function tearDown(): void
Likelihood Of Impact: Optional
Mặc định, Laravel 5.8 sử dụng PHPUnit 7. Tuy nhiên, bạn có thể tùy chọn nâng cấp lên phiên bản PHPUnit 8, nó yêu cầu PHP > = 7.2. Ngoài ra, vui lòng đọc qua toàn bộ danh sách các thay đổi có trong thông báo phát hành PHPUnit 8.
Validator
ContractLikelihood Of Impact: Very Low
Phương thức validated
đã được thêm vào contract Illuminate\Contracts\Validation\Validator
:
/**
* Get the attributes and values that were validated.
*
* @return array
*/
public function validated();
Phương thức addContextualBinding
đã được thêm vào contract Illuminate\Contracts\Container\Container
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
ValidatesAttributes
TraitLikelihood Of Impact: Very Low
Các phương thức parseTable
, getQueryColumn
và requireParameterCount
của trait Illuminate\Validation\Concerns\ValidatesAttributes
đã được thay đổi từ protected
thànhpublic
.
DatabasePresenceVerifier
ClassLikelihood Of Impact: Very Low
Phương thức table
trong class Illuminate\Validation\DatabasePresenceVerifier
đã được thay đổi từ protected
thànhpublic
.
Validator
ClassLikelihood Of Impact: Very Low
Phương thức getPresenceVerifierFor
trong class Illuminate\Validation\Validator
đã được thay đổi từ protected
thànhpublic
.
Likelihood Of Impact: Very Low
Quy tắc validation email bây giờ sẽ kiểm tra xem email có tuân thủ theo tiêu chuẩn RFC6530 hay không, điều này làm cho logic validation nhất quán với logic được SwiftMailer sử dụng. Trong Laravel 5.7
, quy tắc email
chỉ kiểm tra rằng email tuân thủ tiêu chuẩn RFC822.
Do đó, khi sử dụng Laravel 5.8, những email trước đây bị coi là không hợp lệ thì bây giờ sẽ được coi là hợp lệ (ví dụ như mail: hej@bär.se
). Nói chung, đây nên được coi là một bản sửa lỗi; tuy nhiên, nó được liệt kê là một thay đổi nghiêm trọng cần thận trọng. Vui lòng cho chúng tôi biết nếu bạn gặp phải bất kỳ vấn đề nào xung quanh thay đổi này.
getData
MethodLikelihood Of Impact: Very Low
Phương thức getData
đã được thêm vào contract Illuminate\Contracts\View\View
. Nếu bạn đang implement interface này, bạn nên thêm các phương thức này vào trong quá trình implement của bạn.
Likelihood Of Impact: High
Các channel Nexmo và Slack Notification đã được lấy ra thành các package độc lập. Để sử dụng các channel này trong ứng dụng của bạn, hãy thêm các package sau bằng Composer:
composer require laravel/nexmo-notification-channel
composer require laravel/slack-notification-channel
Chúng tôi cũng khuyến cáo bạn nên xem các thay đổi trong laravel/laravel
GitHub repository. Mặc dù nhiều thay đổi trong số này là không bắt buộc, nhưng có thể bạn muốn giữ các file đó được đồng bộ với ứng dụng của bạn. Một số thay đổi sẽ được đề cập trong hướng dẫn nâng cấp này, nhưng đối với những thay đổi khác, chẳng hạn như thay đổi file cấu hình hoặc comment đều sẽ không được đề cập đến. Bạn có thể dễ dàng xem các thay đổi đó bằng Công cụ so sánh của GitHub và chọn bản cập nhật nào quan trọng với bạn.
entry