Instructions de mise à niveau
- Composant avec une spécification PSR-16 les modèles ajoutent des attributs d'identification à incrémentation automatique
Mise à jour de Laravel 5.7 vers 5.8
Durée de mise à niveau estimée : 1 heure
Remarque : Nous essayons de documenter chaque changement possible. Étant donné que la plupart des modifications majeures sont internes au framework, seul un sous-ensemble de ces modifications peut affecter votre application.
Mettre à jour les dépendances
Dans composer.json
, mettez à jour la dépendance laravel/framework
vers 5.8.*
. composer.json
中,将 laravel/framework
依赖项更新为 5.8.*
。
接下来,检查应用程序中已安装的第三方包是否支持 Laravel 5.8,并检查已安装的版本是否正确。
应用契约
environment
方法
影响可能性:非常低
Illuminate/Contracts/Foundation/Application
类 environment
方法的签名已修改。如果在您的应用程序中重写了这个方法,您应该更新此方法的签名:
/** * 获取或检查当前应用程序的环境 * * @param string|array $environments * @return string|bool */public function environment(...$environments);
新添加的方法
影响可能性:非常低
以下新添加方法 bootstrapPath
, configPath
, databasePath
, environmentPath
, resourcePath
, storagePath
, resolveProvider
, bootstrapWith
, configurationIsCached
, detectEnvironment
, environmentFile
, environmentFilePath
, getCachedConfigPath
, getCachedRoutesPath
, getLocale
, getNamespace
, getProviders
, hasBeenBootstrapped
, loadDeferredProviders
, loadEnvironmentFrom
, routesAreCached
, setLocale
, shouldSkipMiddleware
, terminate
将会被添加到 Illuminate/Contracts/Foundation/Application
中.
如果你实现了这个接口,你应该将这些方法添加到实现类中。
认证
重置密码通知路由参数
影响可能性:低
当用户点击重置密码链接时,Laravel 使用 route
助手生成 URL ,以创建指向以 password.reset
命名的路由,当使用 Laravel 5.7 的时候,token 将会被传递到不带显式名称的 route
助手,比如:
route('password.reset', $token);
当你使用 Laravel 5.8 时,token 作为显式参数传递给 route
助手:
route('password.reset', ['token' => $token]);
因此,如果你要定义自己的 password.reset
Méthode environnement
Possibilité d'impact : très faible
Illuminate/Contrats/Fondation/Application
Classe environnement
La signature de la méthode a été modifiée. Si cette méthode est remplacée dans votre application, vous devez mettre à jour la signature de cette méthode : // Laravel 5.7 - 存储数据30分钟
Cache::put('foo', 'bar', 30);// Laravel 5.8 - 存储数据30秒
Cache::put('foo', 'bar', 30);// Laravel 5.7 / 5.8 - 存储数据30秒
Cache::put('foo', 'bar', now()->addSeconds(30));
Méthode nouvellement ajoutée Probabilité d'impact : très faible
🎜🎜La méthode nouvellement ajoutée suivantebootstrapPath code>, < code>configPath
, databasePath
, environmentPath
, resourcePath
, storagePath
, resolveProvider code>, bootstrapWith
, configurationIsCached
, detectEnvironment
, environmentFile
, environmentFilePath
, getCachedConfigPath
, getCachedRoutesPath
, getLocale
, getNamespace
, getProviders
, hasBeenBootstrapped
, loadDeferredProviders
, loadEnvironmentFrom
, routesAreCached
, setLocale
, shouldSkipMiddleware
, terminate
sera ajouté à Illuminate/Contracts/Foundation/Application
🎜🎜Si vous implémentez cette interface, vous devez ajouter ces méthodes à la classe d'implémentation. 🎜🎜Authentification🎜🎜Réinitialiser les paramètres de la route de notification de mot de passe 🎜🎜🎜Probabilité d'impact : faible 🎜🎜🎜Lorsque l'utilisateur clique sur le lien de réinitialisation du mot de passe, Laravel utilise l'assistant route
pour générer l'URL permettant de créer un lien vers < code>password.reset
nommé route, lors de l'utilisation de Laravel 5.7, le jeton sera transmis à l'assistant route
sans nom explicite, tel que : 🎜Cache::lock('foo', 10)->get(function () { // 锁将会被安全的自动释放});🎜Lorsque vous utilisez In Laravel 5.8, le jeton est passé en paramètre explicite à l'assistant
route
: 🎜if (($lock = Cache::lock('foo', 10))->get()) { // 执行任务… $lock->release();}🎜 Par conséquent, si vous souhaitez définir votre propre route
password.reset
, son uri doit To inclure un paramètre de jeton. 🎜🎜Changement de la longueur du mot de passe par défaut🎜🎜🎜Impact potentiel : faible 🎜🎜🎜La longueur du mot de passe requise lors de la sélection ou de la réinitialisation d'un mot de passe est modifiée à au moins huit caractères. 🎜🎜Cache🎜🎜TTL en secondes🎜🎜🎜Impact potentiel : très élevé🎜🎜Pour permettre des délais d'expiration plus précis lors du stockage des données, la durée de vie des données mises en cache a été modifiée de quelques minutes à quelques secondes. put
, putMany
, add
, remember
pour la classe IlluminateCacheRepository
et ses classes d'extension Cette mise à jour est complétée par la méthode setDefaultCacheTime
et la méthode put
de toutes les mémoires cache. Veuillez consulter le PR associé pour plus de détails. IlluminateCacheRepository
类和它的扩展类的 put
, putMany
, add
, remember
和 setDefaultCacheTime
方法,以及所有缓存存储器的 put
方法都完成了此更新。详情请看 相关的 PR 。
如果要向这些方法中的任何一个传递整数,请更新代码以确保保留在缓存中的数据传递的数值是秒。另外,你可以传递一个 DateTime
实例指示数据何时到期:
// 在控制器中…$podcast = Podcast::find(1); if (($lock = Cache::lock('foo', 120))->get()) { ProcessPodcast::dispatch($podcast, $lock->owner());}// 在进程广播队列中… Cache::restoreLock('foo', $this->owner)->release();
{提示} 此更改使 Laravel 缓存系统完全符合 PSR-16 缓存库标准 。
遵循 PSR-16
影响可能性:中等
除了以上返回值有变化之外,本次升级还更新了 IlluminateCacheRepository
类中的 put
, putMany
和 add
方法的 TTL 参数,使之更符合 PSR-16 规范。新特性提供了一个默认的 null
,所以如果不指定 TTL 值,那么缓存将会永久存储不会过期。此外,如果缓存项的 TTL 为 0 或者更小,那么将会被清除。参阅 相关的 PR 获取更多信息。
KeyWritten
事件基于这些变动 也进行了更新 。
锁安全性改善
影响可能性:高
在 Laravel 5.7 以及 Laravel 更早的版本的中,一些缓存驱动提供的 “原子锁” 特性,可能由于一些意外行为导致锁被提前释放。
例如: 客户端 A 获取了一个 10 秒过期的锁 foo
。客户端 A 实际上需要耗费 20 秒来完成它的任务。在客户端 A 任务执行期间,锁被缓存系统自动释放。之后 客户端 B 获取到锁 foo
。最终 客户端 A 完成了它的任务并释放掉锁 foo
,但是无意中释放了 客户端 B 所持有的锁。这时候 客户端 C 又可以获取到锁。
为了缓解这种情况,现在使用嵌入的「范围令牌」生成锁,这样可以确保在正常情况下,只有锁的持有者才能释放锁。
如果你正在使用 Cache::lock()->get(Closure)
方法使用锁,则不需要进行任何更改:
Cache::lock('foo')->forceRelease();
但是,如果要手动调用, Cache::lock()->release()
,则必须更新代码以维护锁的实例。然后,在完成任务后,可以在同一个锁实例上调用 release
DateTime
pour indiquer quand les données expirent : 🎜/** * 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);
🎜{Tip} Ce changement rend le système de cache Laravel entièrement conforme à la norme de bibliothèque de cache PSR-16. 🎜
Conforme au PSR-16
🎜Possibilité d'impact : Moyen🎜🎜En plus des changements dans les valeurs de retour ci-dessus, cette mise à jour met également à jour leParamètres TTL IlluminateCacheRepository pour les méthodes put
, putMany
et add
dans la classe
pour les rendre plus conformes au PSR-16 spécification. La nouvelle fonctionnalité fournit un null
par défaut, donc si aucune valeur TTL n'est spécifiée, le cache sera stocké de manière permanente et n'expirera pas. De plus, les entrées du cache seront effacées si leur durée de vie est égale ou inférieure à 0. Voir le PR associé pour plus d'informations. 🎜🎜L'événement KeyWritten
a également été mis à jour en fonction de ces modifications. 🎜Améliorations de la sécurité du verrouillage
🎜Possibilité d'impact : Élevée🎜🎜Dans Laravel 5.7 et les versions antérieures de Laravel, la fonctionnalité "verrouillage atomique" fournie par certains pilotes de cache, le verrou peut être libéré prématurément en raison d'un comportement inattendu. 🎜🎜Par exemple : le Client A acquiert un verroufoo
qui expire dans 10 secondes. Le Client A met en réalité 20 secondes pour terminer sa tâche. Lors de l'exécution de la tâche Client A, le verrou est automatiquement libéré par le système de cache. Ensuite, le Client B acquiert le verrou foo
. Finalement, le Client A termine sa tâche et libère le verrou foo
, mais libère par inadvertance le verrou détenu par le Client B. À ce moment, le Client C peut à nouveau obtenir le verrou. 🎜🎜Pour remédier à cette situation, le verrou est désormais généré à l'aide d'un « jeton de portée » intégré, qui garantit que dans des circonstances normales, seul le détenteur du verrou peut déverrouiller le verrou. 🎜🎜Si vous utilisez le verrou à l'aide de la méthode Cache::lock()->get(Closure)
, aucune modification n'est requise : 🎜$value = DB::table('users')->value('options->language'); dump($value); // Laravel 5.7... '"en"' // Laravel 5.8... 'en'🎜 Cependant, si vous souhaitez l'appeler manuellement,
Cache::lock()->release()
, vous devez mettre à jour le code pour conserver l'instance de verrouillage. Ensuite, une fois la tâche terminée, la méthode release
peut être appelée sur la même instance de verrou. Par exemple : 🎜// Laravel 5.7... App\Feedback.php -> feedback (正确的复数形式) App\UserFeedback.php -> user_feedbacks (错误的复数形式) // Laravel 5.8 App\Feedback.php -> feedback (正确的复数形式) App\UserFeedback.php -> user_feedback (正确的复数形式)
Parfois, vous souhaiterez peut-être acquérir un verrou dans un processus et le libérer dans un autre processus. Par exemple, vous pouvez acquérir un verrou lors d'une requête Web et vouloir le libérer à la fin de la tâche en file d'attente déclenchée par cette requête. Dans ce cas, vous devez transmettre le « jeton de propriétaire » de la portée du verrou au travail en file d'attente afin que le travail puisse ré-instancier le verrou avec le jeton donné :
/** * 与模型关联的数据表名称。 * * @var string */protected $table = 'user_feedbacks';
Si vous souhaitez faire cela sans respecter son propriétaire actuel Pour libérer le lock, vous pouvez utiliser les méthodes forceRelease
suivantes : forceRelease
方法:
/** * 标识 ID 是否自增 * * @var bool */public $incrementing = true;
Repository
和 Store
契约
影响可能性:非常低
为了完全符合 PSR-16
的要求,IlluminateContractsCacheRepository
契约的 put
和 forever
方法的返回值以及 IlluminateContractsCacheStore
契约的 put
, putMany
和 forever
方法 已更改 从 void
到 bool
。
集合
firstWhere
方法
影响可能性:非常低
firstWhere
方法参数 已更改 匹配 where
方法的签名。如果要重写此方法,则应更新方法的参数来匹配其父级:
protected $casts = ['deleted_at' => 'string'];
终端
Kernel
契约
影响可能性:非常低
terminate
方法 已经添加到 Illuminate/Contracts/Console/Kernel
契约中。如果你实现了这个接口,则应该将这个方法添加到实现类中。
容器
生成器 & 标记服务
影响可能性:中等
容器的 tagged
方法使用 PHP 生成器通过给定的标记惰性地实例化服务。由于这种改变,tagged
方法返回 iterable
类型,而不是 数组
。如果你这个方法使用了类型提示的返回值,则应确保将类型提示也更改为 iterable
类型。
另外,不能再通过数组偏移值直接访问标记服务 ,比如 $container->tagged('foo')[0]
。
resolve
方法
影响可能性:非常低
resolve
方法 接收一个新布尔参数,该参数指示事件在对象实例化期间是否应触发 / 执行(解析回调)。如果你重写了这个方法,你必须更新方法签名以匹配父方法。
addContextualBinding
方法
影响可能性:非常低
IlluminateContractsContainerContainer
契约增加了 addContextualBinding
/** * 将给定的 Http 异常转换为 Http 响应。 * * @参数 \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface $e * @返回 \Symfony\Component\HttpFoundation\Response */protected function renderHttpException(HttpExceptionInterface $e);
Repository
et Store
Contract
Impact potentiel : Très faible🎜🎜Afin de respecter pleinement les exigences du PSR-16
, le put
et le du contrat IlluminateContractsCacheRepository
La valeur de retour de la méthode >forever
et des méthodes put
, putMany
et forever
du IlluminateContractsCacheStore
Le contrat est passé de void
à bool
. 🎜Collection
méthode firstWhere
🎜Possibilité d'impact : très faible🎜🎜 Méthode firstWhere
Les paramètres ont été modifiés pour correspondre à la signature de la méthode where
. Si vous souhaitez remplacer cette méthode, vous devez mettre à jour les paramètres de la méthode pour qu'ils correspondent à son parent : 🎜'employee' => [ 'name' => 'Taylor Otwell',],/** * 转换给定的值. * * @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)}
Terminal
Kernel
Contract
🎜Effets Probabilité : Très faible🎜🎜La méthode terminate
a été ajoutée au contrat Illuminate/Contracts/Console/Kernel
. Si vous implémentez cette interface, vous devez ajouter cette méthode à la classe d'implémentation. 🎜Container
Générateur et service de balises
🎜Probabilité d'impact : moyen🎜🎜La méthodetagged
de Container est générée à l'aide de PHP. Le fournisseur instancie paresseusement le service avec la balise donnée. En raison de ce changement, la méthode tagged
renvoie un type iterable
au lieu d'un array
. Si votre méthode utilise une valeur de retour indiquée par un type, veillez également à modifier l'indication de type en un type iterable
. 🎜🎜De plus, le service de balises n'est plus accessible directement via la valeur de décalage du tableau, telle que $container->tagged('foo')(0]
. 🎜méthode resolve
🎜Impact potentiel : très faible🎜🎜 La méthode resolve
reçoit un nouveau paramètre booléen qui indique si le l'événement doit se déclencher/s'exécuter pendant l'instanciation de l'objet (rappel de résolution). Si vous remplacez cette méthode, vous devez mettre à jour la signature de la méthode pour qu'elle corresponde à la méthode parent. 🎜Méthode addContextualBinding
🎜Possibilité d'impact : Très faible🎜🎜IlluminateContractsContainerContainer
Le contrat ajoute addContextualBinding code> méthode. Si vous souhaitez implémenter cette interface, vous devez ajouter cette méthode à votre implémentation. 🎜Méthode tagged
tagged
方法
影响可能性:低
tagged
方法现在 改为 返回 iterable
类型而不是 array
类型。如果你的代码参数有类型提示,找到所有 tagged
方法提示 array
类型的地方,将类型提示改为 iterable
类型。
flush
方法
影响可能性:非常低
IlluminateContractsContainerContainer
契约增加了 flush
方法。如果要实现此接口,则应将此方法加到你的实现中。
数据库
未被引号包围的 MySQL JSON 值
影响可能性:低
在使用 MySQL 和 MariaDB 的时候,Query 构造器返回的 JSON 值将不会使用引号包围。其他数据库将和这里的行为保持一致:
protected function setUp(): voidprotected function tearDown(): void
因此,不再支持或不再需要 ->>
操作符了。
SQLite
影响可能性:中等
从 Laravel 5.8 开始, 最早版本 SQLite 支持 一直到 SQLite 3.7.11。如果你使用的是更早之前的 SQLite 版本,你应该升级 (推荐升级到 SQLite 3.8.8+)。
Eloquent
模型命名中的不规则复数结尾
影响可能性:中等
从 Laravel 5.8 起,含有不规则复数形式结尾的复合名称模型命名 现在可以正确的进行复数化.
/**
* 获取已验证的属性和值。
*
* @return array
*/public function validated();
如果你的模型名称没有正确的使用复数名称,你在模型中定义 $table
属性之后还是可以继续使用它的:
composer require laravel/nexmo-notification-channel
composer require laravel/slack-notification-channel
带有递增 ID 的自定义中继模型
如果你用一个自定义的中继模型定义了多对多的关系,而且这个中继模型拥有一个自增的主键,你应当确保这个自定义中继模型类中定义了一个 incrementing
属性其值为 true
:
rrreeeloadCount
方法
影响可能性:低
基础类 IlluminateDatabaseEloquentModel
中添加了 loadCount
方法。如果你的应用中也定义了 loadCount
方法,可能会和 Eloquent 中的相冲突。
originalIsEquivalent
方法
影响可能性:非常低
IlluminateDatabaseEloquentConcernsHasAttributes
trait 中的 originalIsEquivalent
成员方法从 protected
改变为 public
。
deleted_at
Probabilité d'impact : faibleLa méthode
tagged
renvoie désormais un type itérable
au lieu d'un tableau < /code> tapez. Si vos paramètres de code ont des indices de type, recherchez tous les indices de méthode tagged
de type array
et modifiez l'indice de type en type iterable
.
Méthode flush
🎜🎜🎜Probabilité d'impact : très faible 🎜🎜🎜Le contrat IlluminateContractsContainerContainer
ajoute une méthode flush
. Si vous souhaitez implémenter cette interface, vous devez ajouter cette méthode à votre implémentation. 🎜Base de données
🎜Valeurs JSON MySQL non entourées de guillemets🎜🎜🎜Possibilité d'impact : Faible🎜🎜🎜Lors de l'utilisation de MySQL et MariaDB, la valeur JSON renvoyée par le constructeur Query ne sera pas entourée de guillemets . D'autres bases de données se comporteront de manière cohérente avec ceci : 🎜rrreee🎜 Par conséquent, l'opérateur ->>
n'est plus pris en charge ni requis. 🎜🎜SQLite🎜🎜🎜Probabilité d'impact : Modérée 🎜🎜🎜 À partir de Laravel 5.8, la première version de SQLite est prise en charge jusqu'à SQLite 3.7.11. Si vous utilisez une version antérieure de SQLite, vous devez effectuer une mise à niveau (il est recommandé de passer à SQLite 3.8.8+). 🎜Éloquent
🎜Finitions plurielles irrégulières dans les noms de modèles🎜🎜🎜Probabilité d'impact : moyenne🎜🎜🎜Depuis Laravel 5.8, la dénomination modèle des noms composés avec des terminaisons plurielles irrégulières fonctionne désormais correctement Pluralisation.🎜rrreee🎜Si votre Le nom du modèle n'utilise pas correctement le nom au pluriel, vous pouvez toujours continuer à l'utiliser après avoir défini l'attribut $table
dans le modèle : 🎜rrreee🎜Automatique avec ID incrémentiel Définir le modèle de relais🎜🎜Si vous définissez un relation plusieurs-à-plusieurs avec un modèle de relais personnalisé et que le modèle de relais possède une clé primaire auto-incrémentée, vous devez vous assurer que la classe du modèle de relais personnalisé définit un attribut incrémentation
dont la valeur est true
: 🎜rrreee🎜Méthode loadCount
🎜🎜🎜Possibilité d'impact : faible 🎜🎜🎜Classe Base IlluminateDatabaseEloquentModel Ajout de la méthode loadCount
dans
. Si votre application définit également la méthode loadCount
, elle peut entrer en conflit avec celle d'Eloquent. 🎜🎜Méthode originalIsEquivalent
🎜🎜🎜Impact potentiel : très faible 🎜🎜🎜La méthode membre IlluminateDatabaseEloquentConcernsHasAttributes
dans le trait IlluminateDatabaseEloquentConcernsHasAttributes
est supprimée de protected
est remplacé par public
. 🎜🎜Conversion automatique par suppression logicielle des attributs deleted_at
🎜🎜🎜Impact potentiel : faible🎜🎜Lorsque votre modèle Eloquent utilise le trait IlluminateDatabaseEloquentSoftDeletes
, la propriété membre deleted_at
sera désormais automatiquement convertie en une instance Carbon
. Vous pouvez remplacer ce comportement en écrivant votre accesseur personnalisé pour la propriété du membre ou en l'ajoutant manuellement à l'attribut casts
: IlluminateDatabaseEloquentSoftDeletes
trait 时 deleted_at
成员属性 现将会自动转换 成为一个 Carbon
实例。你可以重写这个行为,通过为该成员属性编写你的自定义 accessor 或者手动将它添加到 casts
属性中:
rrreeeBelongsTo
的 getForeignKey
方法
影响可能性:低
BelongsTo
关联关系中的 getForeignKey
和 getQualifiedForeignKey
方法已分别重命名为 getForeignKeyName
和 getQualifiedForeignKeyName
,使得方法名和在 Laravel 提供的其他关联关系中保持一致。
事件
fire
方法
影响可能性:低
Illuminate/Events/Dispatcher
类中的 fire
方法 (在 Larevel 5.4 中不赞成使用) 已经被 移除 了。
你应当使用它的替代方法 dispatch
。
异常处理器
ExceptionHandler
契约
影响可能性:低
IlluminateContractsDebugExceptionHandler
契约中新增了 shouldReport
方法。 现在当你实现异常处理器的接口时,你需要同时实现此方法。
renderHttpException
方法
影响可能性:低
IlluminateFoundationExceptionsHandler
类中 renderHttpException
方法的签名 有改动 。现在如果你在异常处理器中重写此方法,应当修改方法的签名以和其父类保持一致:
rrreeeFacades
Facade 服务解析
影响可能性:低
getFacadeAccessor
方法现在可以 只返回代表服务容器标识的字符串 ,之前该方法会返回一个对象实例。
邮件
Markdown 文件路径更改
影响可能性:高
如果你已经使用 vendor:publish
命令发布了 Laravel 的 Markdown 邮件组件,你需要将 /resources/views/vendor/mail/markdown
路径重命名为 text
。
并且 markdownComponentPaths
方法 已被重命名 为 textComponentPaths
。如果你要重写这个方法,你应该更新方法名,使之与其父类一致。
PendingMail
rrreeeBelongsTo
's code>getForeignKey code>
Possibilité d'impact : Faible
🎜BelongsTo
Les méthodes getForeignKey
et getQualifiedForeignKey
dans la relation ont été renommées en getForeignKeyName
et getQualifiedForeignKeyName
respectivement pour rendre le nom de la méthode cohérent avec les autres relations fournies par Laravel.
🎜Méthode Event
fire
🎜🎜🎜Probabilité d'impact : faible🎜🎜🎜Classe Illuminate/Events/Dispatcher
La < La méthode code>fire
(obsolète dans Larevel 5.4) a été supprimée. Vous devez utiliser son alternative
dispatch
. 🎜Contrat Exception Handler
ExceptionHandler
🎜🎜🎜Impact potentiel : faible🎜🎜🎜IlluminateContractsDebugExceptionHandler
Nouveau ajouté au contrat ShouldReport< /code> méthode. Désormais, lorsque vous implémentez l’interface du gestionnaire d’exceptions, vous devez également implémenter cette méthode. 🎜méthode renderHttpException
🎜🎜🎜Possibilité d'impact : Faible🎜🎜🎜IlluminateFoundationExceptionsHandler
La signature de la méthode renderHttpException
dans le La classe IlluminateFoundationExceptionsHandler
a changé. Maintenant, si vous remplacez cette méthode dans un gestionnaire d'exceptions, vous devez modifier la signature de la méthode pour qu'elle soit cohérente avec sa classe parent : 🎜rrreeeFaçades
Résolution du service de façade 🎜🎜🎜Impact potentiel : Faible 🎜🎜🎜La méthode getFacadeAccessor
peut désormais simplement renvoyer une chaîne représentant l'ID du conteneur de service, au lieu de renvoyer une instance d'objet. 🎜Mail
Changement du chemin du fichier Markdown
🎜🎜Possibilité d'impact : Élevé🎜🎜🎜Si vous avez publié en utilisant le vendor:publish
commande Pour utiliser le composant de messagerie Markdown de Laravel, vous devez renommer le chemin /resources/views/vendor/mail/markdown
en text
. 🎜🎜Et la méthode markdownComponentPaths
a été renommée en textComponentPaths
. Si vous remplacez cette méthode, vous devez mettre à jour le nom de la méthode pour qu'il corresponde à sa classe parent. 🎜Changement des paramètres de la méthode de classePendingMail
🎜🎜🎜Possibilité d'impact : très faible🎜🎜
send
, sendNow
, queue
, later
et dans IlluminateMailPendingMail
class La méthode >fill
a été modifiée pour accepter une instance IlluminateContractsMailMailable
comme paramètre au lieu d'une instance IlluminateMailMailable
. Si vous souhaitez remplacer une méthode, vous devez mettre à jour ses paramètres pour qu'ils soient cohérents avec sa classe parent. IlluminateMailPendingMail
类中的 send
, sendNow
, queue
, later
和 fill
方法 已被更改 为需接收一个 IlluminateContractsMailMailable
实例作为参数,而不是 IlluminateMailMailable
实例。如果你要重写其中的方法,你需要更新其形参,和其父类保持一致。
队列
Pheanstalk 4.0
影响可能性:中
Laravel 5.8 提供了支持 ~4.0
发布版本的 Pheanstalk 队列。如果你正在应用中使用 Pheanstalk 库,请通过 Composer 升级你的库到 ~4.0
发布版本。
Job
契约
影响可能性:非常低
isReleased
, hasFailed
和 markAsFailed
方法 已被加入到 IlluminateContractsQueueJob
契约中 。如果你正在实现这个 interface ,你应该添加这些方法到你的实现代码中。
Job::failed
& FailingJob
类
影响可能性:非常低
在 Laravel 5.7 中,当一个队列任务失败后,队列 worker 将执行 FailingJob::handle
方法。在 Laravel 5.8 中,FailingJob
类中的逻辑已被迁移到了 fail
方法中,该方法就定义在这个任务类中。正因如此, fail
方法被纳入了 IlluminateContractsQueueJob
契约。
IlluminateQueueJobsJob
基类包含了 fail
的实现,在常规的应用里不需要改任何代码。然而,如果你正在搭建自定义的队列驱动,起了一个任务类,该任务类 没有 继承由 Laravel 提供的任务基类,你应该在你自定义的任务类中手动实现 fail
方法。作为实现的参考,你可以查阅 Laravel 的任务基类。
这个改变允许定制队列驱动,从而在对任务删除过程获得更多的控制。
Redis Blocking Pop
影响可能性:非常低
现在使用 Redis 队列驱动的 「blocking pop」特性是安全的。在之前,如果 Redis 服务或者 worker 掉线的同时取出任务,可能造成队列中的任务丢失(小概率事件)。 为了让 blocking pops 变得安全,将给每一个 Laravel 队列创建一个新的带有 :notify
后缀的 Redis list 。
请求
TransformsRequest
中间件
影响可能性:低
现在,当请求输入是一个数组时, IlluminateFoundationHttpMiddlewareTransformsRequest
中间件的 transform
方法将接收到「全限定」 请求输入的 key :
rrreee路由
UrlGenerator
File d'attente
Pheanstalk 4.0
Possibilité d'impact : Medium
🎜Laravel 5.8 fournit des files d'attente Pheanstalk qui prennent en charge la version ~4.0
. Si vous utilisez la bibliothèque Pheanstalk dans votre application, veuillez mettre à niveau votre bibliothèque vers la version ~4.0
via Composer. 🎜Job
🎜🎜🎜Possibilité d'impact : très faible🎜🎜🎜isReleased
, hasFailed
et markAsFailed
La méthode a été ajoutée au contrat IlluminateContractsQueueJob
. Si vous implémentez cette interface, vous devez ajouter ces méthodes à votre code d'implémentation. 🎜Classes Job::failed
& FailingJob
🎜🎜🎜Possibilité d'impact : très faible🎜🎜🎜Dans Laravel 5.7, lorsqu'une tâche de file d'attente échoue, la file d'attente Le travailleur exécutera la méthode FailingJob::handle
. Dans Laravel 5.8, la logique de la classe FailingJob
a été migrée vers la méthode fail
, qui est définie dans cette classe de tâches. Pour cette raison, la méthode fail
est incluse dans le contrat IlluminateContractsQueueJob
. 🎜🎜IlluminateQueueJobsJob
La classe de base contient l'implémentation de fail
, et il n'est pas nécessaire de modifier le code dans les applications classiques. Cependant, si vous créez un pilote de file d'attente personnalisé et créez une classe de tâches qui n'hérite pas de la classe de base de tâches fournie par Laravel, vous devez implémenter manuellement fail< dans votre méthode de classe de tâches personnalisée /code>. Comme référence pour l'implémentation, vous pouvez consulter la classe de base de tâches de Laravel. 🎜🎜Ce changement permet de personnaliser le pilote de file d'attente pour mieux contrôler le processus de suppression des tâches. 🎜Redis Blocking Pop🎜🎜🎜Possibilité d'impact : Très faible🎜🎜🎜Il est désormais sûr d'utiliser la fonctionnalité "blocking pop" du pilote de file d'attente Redis. Auparavant, si le service ou le travailleur Redis était déconnecté et que des tâches étaient supprimées en même temps, les tâches dans la file d'attente pouvaient être perdues (un événement peu probable). Pour sécuriser le blocage des pops, une nouvelle liste Redis avec le suffixe :notify
sera créée pour chaque file d'attente Laravel. 🎜Request
TransformsRequest
Middleware 🎜🎜🎜Probabilité d'impact : faible 🎜🎜🎜Maintenant, lorsque l'entrée de la requête est un tableau, IlluminateFoundationHttpMiddlewareTransformsRequest
Le La méthode transform
du middleware recevra la clé de saisie de requête "pleinement qualifiée" : 🎜rrreeeRoute
UrlGenerator
protocol🎜🎜🎜 Probabilité de impact : Très faible🎜🎜
La méthode previous
a été ajoutée au contrat IlluminateContractsRoutingUrlGenerator
. Si vous souhaitez appeler cette interface, vous devez ajouter cette méthode à votre implémentation. previous
方法 已经添加到 IlluminateContractsRoutingUrlGenerator
contract 中。如果要调用这个接口,你应该将这个方法添加到你的实现中。
Illuminate/Routing/UrlGenerator
中的 cachedSchema
特性
影响可能性:非常低
Illuminate/Routing/UrlGenerator
中的 $cachedSchema
属性 (在 Laravel 5.7 中已被弃用) 已更改为 $cachedScheme
。
Sessions
StartSession
中间件
影响可能性:非常低
Session 的持久性逻辑已 从 terminate()
方法移动到 handle()
方法。 如果你要重写其中的方法, 则应该更新它们以反映这些更改。
Support
优先使用字符串和数组类而不是辅助函数
影响可能性:中等
所有的 array_*
and str_*
全局辅助函数 都被废弃。你需要直接使用 IlluminateSupportArr
和 IlluminateSupportStr
提供的方法。
这个调整的影响被标记为中等,因为这些辅助函数被转移到新的 laravel/helpers 扩展包中,以便更好地向后兼容。
延迟的服务提供者
影响可能性:中等
服务提供程序的用于指示是否延迟提供程序的 defer
布尔属性已经被废弃。现在如果要将服务提供者标记为延迟的需要通过实现 IlluminateContractsSupportDeferrableProvider
契约来完成。
测试
PHPUnit 8
影响可能性:可选
默认情况下, Laravel 5.8 使用 PHPUnit 7.。不过, 你可以升级到 PHPUnit 8,但是这需要 PHP >= 7.2。更多细节请阅读 PHPUnit 8 版本声明。
setUp
和 tearDown
方法现在要求返回 void 类型:
rrreee验证
Validator
契约
影响可能性:非常低
IlluminateContractsValidationValidator
中 新增了 validated
方法:
rrreee如果你调用了这个接口,需要添加此方法的实现。
ValidatesAttributes
特性
影响可能性:非常低
IlluminateValidationConcernsValidatesAttributes
特性中的 parseTable
、 getQueryColumn
和 requireParameterCount
方法可见性从 protected
调整为了 public
。
DatabasePresenceVerifier
类
影响可能性:非常低
IlluminateValidationDatabasePresenceVerifier
类的 table
方法可见性从 protected
调整为了 public
cachedSchema
fonctionnalité dans Illuminate/Routing/UrlGenerator
Impact potentiel : très faible🎜🎜 Le < La propriété code>$cachedSchema
dans Illuminate/Routing/UrlGenerator
(obsolète dans Laravel 5.7) a été remplacée par $cachedScheme
. 🎜Sessions
Démarrer la session
Middleware
🎜Impact potentiel : Très faible🎜🎜La logique de persistance de la session a été modifiée de< Le code La méthode >terminate()
est déplacée vers la méthode handle()
. Si vous remplacez les méthodes qu'elles contiennent, vous devez les mettre à jour pour refléter les modifications. 🎜Support
Préférer les classes de chaînes et de tableaux aux fonctions d'assistance
🎜Impact potentiel : moyen🎜🎜Tous les array_*< /code> et < Les fonctions d'assistance globales code>str_*
sont obsolètes. Vous devez utiliser directement les méthodes fournies par IlluminateSupportArr
et IlluminateSupportStr
. 🎜🎜L'impact de cet ajustement est marqué comme moyen car ces fonctions d'assistance sont déplacées vers le nouveau package d'extension laravel/helpers pour une meilleure compatibilité ascendante. 🎜Fournisseur de services différé
🎜Probabilité d'impact : moyen🎜🎜La propriété booléenne defer
du fournisseur de services indiquant s'il faut différer le fournisseur déjà abandonné. Désormais, le marquage d'un fournisseur de services comme différé doit être effectué en implémentant le contrat IlluminateContractsSupportDeferrableProvider
. 🎜Test
PHPUnit 8
🎜Possibilité d'impact : Facultatif🎜🎜Par défaut, Laravel 5.8 utilise PHPUnit 7. Cependant, vous pouvez passer à PHPUnit 8, mais cela nécessite PHP >= 7.2. Veuillez lire l'annonce de la sortie de PHPUnit 8 pour plus de détails. 🎜🎜Les méthodes setUp
et tearDown
nécessitent désormais le type de retour void : 🎜rrreeeValidation
Validator
Contrat< /code> h4>🎜Possibilité d'impact : très faible🎜🎜IlluminateContractsValidationValidator
Ajout de la méthode validated
: 🎜rrreee🎜Si vous appelez cette interface, An la mise en œuvre de cette méthode doit être ajoutée. 🎜Attribut ValidatesAttributes
🎜Impact potentiel : très faible🎜🎜Attribut IlluminateValidationConcernsValidatesAttributes
dans parseTable La visibilité du code>, les méthodes getQueryColumn
et requireParameterCount
ont été ajustées de protected
à public
. 🎜Classe DatabasePresenceVerifier
🎜Impact potentiel : très faible🎜🎜 Méthode IlluminateValidationDatabasePresenceVerifier
de la classe visibilité ajustée de protected
à public
. 🎜Classe Validator
Impact potentiel : très faibleValidator
类
méthode renderHttpException
🎜🎜🎜Possibilité d'impact : Faible🎜🎜🎜IlluminateFoundationExceptionsHandler
La signature de la méthode renderHttpException
dans le La classe IlluminateFoundationExceptionsHandler
a changé. Maintenant, si vous remplacez cette méthode dans un gestionnaire d'exceptions, vous devez modifier la signature de la méthode pour qu'elle soit cohérente avec sa classe parent : 🎜rrreeeFaçades
Résolution du service de façade 🎜🎜🎜Impact potentiel : Faible 🎜🎜🎜La méthode getFacadeAccessor
peut désormais simplement renvoyer une chaîne représentant l'ID du conteneur de service, au lieu de renvoyer une instance d'objet. 🎜Mail
Changement du chemin du fichier Markdown
🎜🎜Possibilité d'impact : Élevé🎜🎜🎜Si vous avez publié en utilisant le vendor:publish
commande Pour utiliser le composant de messagerie Markdown de Laravel, vous devez renommer le chemin /resources/views/vendor/mail/markdown
en text
. 🎜🎜Et la méthode markdownComponentPaths
a été renommée en textComponentPaths
. Si vous remplacez cette méthode, vous devez mettre à jour le nom de la méthode pour qu'il corresponde à sa classe parent. 🎜Changement des paramètres de la méthode de classePendingMail
🎜🎜🎜Possibilité d'impact : très faible🎜🎜
getFacadeAccessor
peut désormais simplement renvoyer une chaîne représentant l'ID du conteneur de service, au lieu de renvoyer une instance d'objet. 🎜Mail
Changement du chemin du fichier Markdown
🎜🎜Possibilité d'impact : Élevé🎜🎜🎜Si vous avez publié en utilisant levendor:publish
commande Pour utiliser le composant de messagerie Markdown de Laravel, vous devez renommer le chemin /resources/views/vendor/mail/markdown
en text
. 🎜🎜Et la méthode markdownComponentPaths
a été renommée en textComponentPaths
. Si vous remplacez cette méthode, vous devez mettre à jour le nom de la méthode pour qu'il corresponde à sa classe parent. 🎜Changement des paramètres de la méthode de classePendingMail
🎜🎜🎜Possibilité d'impact : très faible🎜🎜
send
, sendNow
, queue
, later
et dans
a été modifiée pour accepter une instance IlluminateMailPendingMail
class La méthode >fillIlluminateContractsMailMailable
comme paramètre au lieu d'une instance IlluminateMailMailable
. Si vous souhaitez remplacer une méthode, vous devez mettre à jour ses paramètres pour qu'ils soient cohérents avec sa classe parent. IlluminateMailPendingMail
类中的 send
, sendNow
, queue
, later
和 fill
方法 已被更改 为需接收一个 IlluminateContractsMailMailable
实例作为参数,而不是 IlluminateMailMailable
实例。如果你要重写其中的方法,你需要更新其形参,和其父类保持一致。
队列
Pheanstalk 4.0
影响可能性:中
Laravel 5.8 提供了支持 ~4.0
发布版本的 Pheanstalk 队列。如果你正在应用中使用 Pheanstalk 库,请通过 Composer 升级你的库到 ~4.0
发布版本。
Job
契约
影响可能性:非常低
isReleased
, hasFailed
和 markAsFailed
方法 已被加入到 IlluminateContractsQueueJob
契约中 。如果你正在实现这个 interface ,你应该添加这些方法到你的实现代码中。
Job::failed
& FailingJob
类
影响可能性:非常低
在 Laravel 5.7 中,当一个队列任务失败后,队列 worker 将执行 FailingJob::handle
方法。在 Laravel 5.8 中,FailingJob
类中的逻辑已被迁移到了 fail
方法中,该方法就定义在这个任务类中。正因如此, fail
方法被纳入了 IlluminateContractsQueueJob
契约。
IlluminateQueueJobsJob
基类包含了 fail
的实现,在常规的应用里不需要改任何代码。然而,如果你正在搭建自定义的队列驱动,起了一个任务类,该任务类 没有 继承由 Laravel 提供的任务基类,你应该在你自定义的任务类中手动实现 fail
方法。作为实现的参考,你可以查阅 Laravel 的任务基类。
这个改变允许定制队列驱动,从而在对任务删除过程获得更多的控制。
Redis Blocking Pop
影响可能性:非常低
现在使用 Redis 队列驱动的 「blocking pop」特性是安全的。在之前,如果 Redis 服务或者 worker 掉线的同时取出任务,可能造成队列中的任务丢失(小概率事件)。 为了让 blocking pops 变得安全,将给每一个 Laravel 队列创建一个新的带有 :notify
后缀的 Redis list 。
请求
TransformsRequest
中间件
影响可能性:低
现在,当请求输入是一个数组时, IlluminateFoundationHttpMiddlewareTransformsRequest
中间件的 transform
方法将接收到「全限定」 请求输入的 key :
路由
UrlGenerator
File d'attente
Pheanstalk 4.0
Possibilité d'impact : Medium
🎜Laravel 5.8 fournit des files d'attente Pheanstalk qui prennent en charge la version~4.0
. Si vous utilisez la bibliothèque Pheanstalk dans votre application, veuillez mettre à niveau votre bibliothèque vers la version ~4.0
via Composer. 🎜Job
🎜🎜🎜Possibilité d'impact : très faible🎜🎜🎜isReleased
, hasFailed
et markAsFailed
La méthode a été ajoutée au contrat IlluminateContractsQueueJob
. Si vous implémentez cette interface, vous devez ajouter ces méthodes à votre code d'implémentation. 🎜Classes Job::failed
& FailingJob
🎜🎜🎜Possibilité d'impact : très faible🎜🎜🎜Dans Laravel 5.7, lorsqu'une tâche de file d'attente échoue, la file d'attente Le travailleur exécutera la méthode FailingJob::handle
. Dans Laravel 5.8, la logique de la classe FailingJob
a été migrée vers la méthode fail
, qui est définie dans cette classe de tâches. Pour cette raison, la méthode fail
est incluse dans le contrat IlluminateContractsQueueJob
. 🎜🎜IlluminateQueueJobsJob
La classe de base contient l'implémentation de fail
, et il n'est pas nécessaire de modifier le code dans les applications classiques. Cependant, si vous créez un pilote de file d'attente personnalisé et créez une classe de tâches qui n'hérite pas de la classe de base de tâches fournie par Laravel, vous devez implémenter manuellement fail< dans votre méthode de classe de tâches personnalisée /code>. Comme référence pour l'implémentation, vous pouvez consulter la classe de base de tâches de Laravel. 🎜🎜Ce changement permet de personnaliser le pilote de file d'attente pour mieux contrôler le processus de suppression des tâches. 🎜Redis Blocking Pop🎜🎜🎜Possibilité d'impact : Très faible🎜🎜🎜Il est désormais sûr d'utiliser la fonctionnalité "blocking pop" du pilote de file d'attente Redis. Auparavant, si le service ou le travailleur Redis était déconnecté et que des tâches étaient supprimées en même temps, les tâches dans la file d'attente pouvaient être perdues (un événement peu probable). Pour sécuriser le blocage des pops, une nouvelle liste Redis avec le suffixe :notify
sera créée pour chaque file d'attente Laravel. 🎜Request
TransformsRequest
Middleware 🎜🎜🎜Probabilité d'impact : faible 🎜🎜🎜Maintenant, lorsque l'entrée de la requête est un tableau, IlluminateFoundationHttpMiddlewareTransformsRequest
Le La méthode transform
du middleware recevra la clé de saisie de requête "pleinement qualifiée" : 🎜rrreeeRoute
UrlGenerator
protocol🎜🎜🎜 Probabilité de impact : Très faible🎜🎜
La méthode previous
a été ajoutée au contrat IlluminateContractsRoutingUrlGenerator
. Si vous souhaitez appeler cette interface, vous devez ajouter cette méthode à votre implémentation. previous
方法 已经添加到 IlluminateContractsRoutingUrlGenerator
contract 中。如果要调用这个接口,你应该将这个方法添加到你的实现中。
Illuminate/Routing/UrlGenerator
中的 cachedSchema
特性
影响可能性:非常低
Illuminate/Routing/UrlGenerator
中的 $cachedSchema
属性 (在 Laravel 5.7 中已被弃用) 已更改为 $cachedScheme
。
Sessions
StartSession
中间件
影响可能性:非常低
Session 的持久性逻辑已 从 terminate()
方法移动到 handle()
方法。 如果你要重写其中的方法, 则应该更新它们以反映这些更改。
Support
优先使用字符串和数组类而不是辅助函数
影响可能性:中等
所有的 array_*
and str_*
全局辅助函数 都被废弃。你需要直接使用 IlluminateSupportArr
和 IlluminateSupportStr
提供的方法。
这个调整的影响被标记为中等,因为这些辅助函数被转移到新的 laravel/helpers 扩展包中,以便更好地向后兼容。
延迟的服务提供者
影响可能性:中等
服务提供程序的用于指示是否延迟提供程序的 defer
布尔属性已经被废弃。现在如果要将服务提供者标记为延迟的需要通过实现 IlluminateContractsSupportDeferrableProvider
契约来完成。
测试
PHPUnit 8
影响可能性:可选
默认情况下, Laravel 5.8 使用 PHPUnit 7.。不过, 你可以升级到 PHPUnit 8,但是这需要 PHP >= 7.2。更多细节请阅读 PHPUnit 8 版本声明。
setUp
和 tearDown
方法现在要求返回 void 类型:
rrreee验证
Validator
契约
影响可能性:非常低
IlluminateContractsValidationValidator
中 新增了 validated
方法:
rrreee如果你调用了这个接口,需要添加此方法的实现。
ValidatesAttributes
特性
影响可能性:非常低
IlluminateValidationConcernsValidatesAttributes
特性中的 parseTable
、 getQueryColumn
和 requireParameterCount
方法可见性从 protected
调整为了 public
。
DatabasePresenceVerifier
类
影响可能性:非常低
IlluminateValidationDatabasePresenceVerifier
类的 table
方法可见性从 protected
调整为了 public
cachedSchema
fonctionnalité dans Illuminate/Routing/UrlGenerator
Impact potentiel : très faible🎜🎜 Le < La propriété code>$cachedSchema
dans Illuminate/Routing/UrlGenerator
(obsolète dans Laravel 5.7) a été remplacée par $cachedScheme
. 🎜Sessions
Démarrer la session
Middleware
🎜Impact potentiel : Très faible🎜🎜La logique de persistance de la session a été modifiée de< Le code La méthode >terminate()
Job::failed
& FailingJob
🎜🎜🎜Possibilité d'impact : très faible🎜🎜🎜Dans Laravel 5.7, lorsqu'une tâche de file d'attente échoue, la file d'attente Le travailleur exécutera la méthode FailingJob::handle
. Dans Laravel 5.8, la logique de la classe FailingJob
a été migrée vers la méthode fail
, qui est définie dans cette classe de tâches. Pour cette raison, la méthode fail
est incluse dans le contrat IlluminateContractsQueueJob
. 🎜🎜IlluminateQueueJobsJob
La classe de base contient l'implémentation de fail
, et il n'est pas nécessaire de modifier le code dans les applications classiques. Cependant, si vous créez un pilote de file d'attente personnalisé et créez une classe de tâches qui n'hérite pas de la classe de base de tâches fournie par Laravel, vous devez implémenter manuellement fail< dans votre méthode de classe de tâches personnalisée /code>. Comme référence pour l'implémentation, vous pouvez consulter la classe de base de tâches de Laravel. 🎜🎜Ce changement permet de personnaliser le pilote de file d'attente pour mieux contrôler le processus de suppression des tâches. 🎜Redis Blocking Pop🎜🎜🎜Possibilité d'impact : Très faible🎜🎜🎜Il est désormais sûr d'utiliser la fonctionnalité "blocking pop" du pilote de file d'attente Redis. Auparavant, si le service ou le travailleur Redis était déconnecté et que des tâches étaient supprimées en même temps, les tâches dans la file d'attente pouvaient être perdues (un événement peu probable). Pour sécuriser le blocage des pops, une nouvelle liste Redis avec le suffixe :notify
sera créée pour chaque file d'attente Laravel. 🎜Request
TransformsRequest
Middleware 🎜🎜🎜Probabilité d'impact : faible 🎜🎜🎜Maintenant, lorsque l'entrée de la requête est un tableau, IlluminateFoundationHttpMiddlewareTransformsRequest
Le La méthode transform
du middleware recevra la clé de saisie de requête "pleinement qualifiée" : 🎜rrreeeRoute
UrlGenerator
protocol🎜🎜🎜 Probabilité de impact : Très faible🎜🎜
La méthode previous
a été ajoutée au contrat IlluminateContractsRoutingUrlGenerator
. Si vous souhaitez appeler cette interface, vous devez ajouter cette méthode à votre implémentation. previous
方法 已经添加到 IlluminateContractsRoutingUrlGenerator
contract 中。如果要调用这个接口,你应该将这个方法添加到你的实现中。
Illuminate/Routing/UrlGenerator
中的 cachedSchema
特性
影响可能性:非常低
Illuminate/Routing/UrlGenerator
中的 $cachedSchema
属性 (在 Laravel 5.7 中已被弃用) 已更改为 $cachedScheme
。
Sessions
StartSession
中间件
影响可能性:非常低
Session 的持久性逻辑已 从 terminate()
方法移动到 handle()
方法。 如果你要重写其中的方法, 则应该更新它们以反映这些更改。
Support
优先使用字符串和数组类而不是辅助函数
影响可能性:中等
所有的 array_*
and str_*
全局辅助函数 都被废弃。你需要直接使用 IlluminateSupportArr
和 IlluminateSupportStr
提供的方法。
这个调整的影响被标记为中等,因为这些辅助函数被转移到新的 laravel/helpers 扩展包中,以便更好地向后兼容。
延迟的服务提供者
影响可能性:中等
服务提供程序的用于指示是否延迟提供程序的 defer
布尔属性已经被废弃。现在如果要将服务提供者标记为延迟的需要通过实现 IlluminateContractsSupportDeferrableProvider
契约来完成。
测试
PHPUnit 8
影响可能性:可选
默认情况下, Laravel 5.8 使用 PHPUnit 7.。不过, 你可以升级到 PHPUnit 8,但是这需要 PHP >= 7.2。更多细节请阅读 PHPUnit 8 版本声明。
setUp
和 tearDown
方法现在要求返回 void 类型:
rrreee验证
Validator
契约
影响可能性:非常低
IlluminateContractsValidationValidator
中 新增了 validated
方法:
rrreee如果你调用了这个接口,需要添加此方法的实现。
ValidatesAttributes
特性
影响可能性:非常低
IlluminateValidationConcernsValidatesAttributes
特性中的 parseTable
、 getQueryColumn
和 requireParameterCount
方法可见性从 protected
调整为了 public
。
DatabasePresenceVerifier
类
影响可能性:非常低
IlluminateValidationDatabasePresenceVerifier
类的 table
方法可见性从 protected
调整为了 public
cachedSchema
fonctionnalité dans Illuminate/Routing/UrlGenerator
Impact potentiel : très faible🎜🎜 Le < La propriété code>$cachedSchema
dans Illuminate/Routing/UrlGenerator
(obsolète dans Laravel 5.7) a été remplacée par $cachedScheme
. 🎜Sessions
Démarrer la session
Middleware
🎜Impact potentiel : Très faible🎜🎜La logique de persistance de la session a été modifiée de< Le code La méthode >terminate()Validator
Contrat< /code> h4>🎜Possibilité d'impact : très faible🎜🎜IlluminateContractsValidationValidator
Ajout de la méthode validated
: 🎜rrreee🎜Si vous appelez cette interface, An la mise en œuvre de cette méthode doit être ajoutée. 🎜Attribut ValidatesAttributes
🎜Impact potentiel : très faible🎜🎜Attribut IlluminateValidationConcernsValidatesAttributes
dans parseTable La visibilité du code>, les méthodes getQueryColumn
et requireParameterCount
ont été ajustées de protected
à public
. 🎜Classe DatabasePresenceVerifier
🎜Impact potentiel : très faible🎜🎜 Méthode IlluminateValidationDatabasePresenceVerifier
de la classe visibilité ajustée de protected
à public
. 🎜Classe Validator
Impact potentiel : très faibleValidator
类
影响可能性:非常低
IlluminateValidationValidator
类的 getPresenceVerifierFor
方法可见性从 protected
调整为了 public
。
邮箱验证
影响可能性:非常低
邮箱验证规则现在回检测邮箱地址是否兼容 RFC5630, 使验证逻辑和 SwiftMailer 保持一致。在 Laravel 5.7, email
规则只验证邮箱地址是否兼容 RFC822。
因此 当使用 Laravel 5.8 时,之前认为无效的邮箱地址现在将被视为有效,如 (e.g hej@bär.se
)。 通常,这被看做一个 bug 修复; 不过, 我们还是将其列到这里给你一个提醒。如果您遇到有关此更改的任何问题,请通知我们。
视图
getData
方法
影响可能性:非常低
IlluminateContractsViewView 契约中新增了 getData
方法。如果你调用了这个接口, 则需要添加该方法的实现。
通知
Nexmo / Slack 通知频道
影响可能性:高
Nexmo 和 Slack 通知频道已经被提前到官方扩展中。要在自己的应用中使用这些频道,需要安装以下扩展包:
rrreee其他
我们还鼓励你查看 laravel/laravel
IlluminateValidationValidator
de la classe getPresenceVerifierFor Code> la visibilité de la méthode est ajustée de
protected
à public
.
View
getData
Possibilité d'impact : très faible🎜
Nouvellement ajouté dans le contrat IlluminateContractsViewView< méthode code>getData. Si vous appelez cette interface, vous devez ajouter l'implémentation de cette méthode. 🎜
Notifications
🎜Canaux de notification Nexmo/SlackImpact potentiel : élevé🎜
Les canaux de notification Nexmo et Slack ont été avancés dans l'extension officielle . Pour utiliser ces chaînes dans votre propre application, vous devez installer les extensions suivantes : 🎜rrreee
Autre
Nous vous encourageons également à consulter le journal des modifications de laravel/laravel
dépôt de code. Bien que bon nombre de ces mises à jour ne soient pas requises, vous pouvez synchroniser ces fichiers dans votre application avec le référentiel de code. Certaines de ces mises à jour sont déjà mentionnées dans ce guide de mise à niveau, mais de nombreuses autres mises à jour mineures (telles que des modifications apportées aux fichiers de configuration ou aux annotations) ne sont pas répertoriées. Vous pouvez voir quelles mises à jour sont les plus importantes pour vous grâce à l'outil de comparaison GitHub. 🎜🎜Cet article a été publié pour la première fois sur le site 🎜LearnKu.com🎜. 🎜🎜