Обновление Laravel с 9 до 10. Обновление файлов за пределами папки поставщика

Я хочу обновить свой уже существующий проект Laravel 9 до версии 10. Цель состоит в том, чтобы не только файлы поставщиков обновлялись через composer. Кроме того, я хочу отразить изменения в коде моего проекта и за пределами папки поставщика.

Я следовал Руководству по обновлению документации Laravel, чтобы обновить свой проект.

Вот файлы, которые были изменены.

Например. мой app/Console/Kernel.php должен измениться с

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

к

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    /**
     * Define the application's command schedule.
     */
    protected function schedule(Schedule $schedule): void
    {
        // $schedule->command('inspire')->hourly();
    }

    /**
     * Register the commands for the application.
     */
    protected function commands(): void
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

Я не думаю, что это вопрос, связанный с git

eftshift0 16.02.2023 11:31

Может быть, я не знаю. Такое чувство, что мне просто нужно git pull что-то, но я не знаю

JanBoehmer 16.02.2023 11:48

Вы должны вручную изменить файлы, потому что вы могли бы изменить что-либо, поэтому у вас будет огромное количество проблем слияния git, но вы не можете использовать git, делать это вручную или использовать сдвиг laravel

matiaslauriti 16.02.2023 13:40

Почему бы не прочитать их руководство по обновлению? У вас есть конкретный вопрос по этой теме?

Nico Haase 16.02.2023 14:27
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
107
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Автоматическое обновление файлов «примеров» такого типа может быть вообще невозможно автоматически, поскольку они доступны для редактирования пользователями в своих проектах, поэтому они не находятся в поставщике.

Лучше всего для обновления синтаксиса, связанного с PHP, такого как упомянутые подсказки типа, может быть что-то вроде PHP-CS-Fixer с соответствующими правилами, но ваш пример функций не будет работать с этим, поскольку для этого требуется старый способ определения возвращаемых типов через PHPДокумент.

Копирование этих изменений вручную из репозитория Laravel и корректировка их в вашем коде, если вы изменили эти файлы, — это правильный путь.

Понимать. Итак, у меня есть две возможности: 1) вручную 1 на 1 или 2) заплатить (или построить что-то вроде смены, где я лучше буду придерживаться 1 😂 Нет ли что-то вроде git merge the code from Laravel's github или что-то в этом роде? Я не я не хочу проверять каждое изменение, я хочу объединить все, как если бы я начал с нового нового проекта Laravel 10

JanBoehmer 16.02.2023 11:56

Это то, что делает композитор. Как вы заметили, он объединяет исходный код из Laravel в папку поставщика вашего проекта. Но вам нужно скорректировать свой проект, если есть критические изменения.

Destroy666 16.02.2023 12:49

Вот о чем мой вопрос. В Laravel Repo (github.com/laravel/laravel) есть все эти изменения. Я мог скачать его как zip, скопировать в свой проект и заменить файлы. и git покажет мне различия или то, что было удалено. Но лучше слияние.

JanBoehmer 16.02.2023 13:37

Я бы порекомендовал прочитать о том, как работают composer.json, composer.lock и vendor. Например. здесь getcomposer.org/doc/01-basic-usage.md Поскольку эти вопросы не имеют особого смысла, если речь не идет о критических изменениях - для обновления библиотек в вашем проекте рекомендуется самое базовое знание Composer/менеджера пакетов. Короче говоря: у вас никогда не должно быть файлов поставщиков в вашем репо.

Destroy666 16.02.2023 13:45

Я думаю, вы не понимаете моего вопроса. Я знаю, как работает композитор, и я знаю, что композитор обновляется внутри папки поставщика. Но то, что я хочу, например. мой app/Console/Kernel.phpprotected function schedule(Schedule $schedule) должен измениться на protected function schedule(Schedule $schedule) : void, потому что это то, что у вас будет, если вы установите Laravel 10 заново. В моих глазах это не имеет ничего общего с композитором.

JanBoehmer 16.02.2023 13:57

Сначала это было бы намного лучше, если бы описание было приведено на примере - я бы рекомендовал обновить вопрос. Но мой первоначальный ответ как бы охватывает это, хотя и под немного другим углом - это изменения, которые вам нужно делать вручную. Этот пример в основном просто добавляет возвращаемый тип к некоторым функциям, и он больше связан с PHP, чем с Laravel.

Destroy666 16.02.2023 14:42

Спасибо за подсказку. Я обновил свой вопрос соответственно, чтобы добавить больше ясности.

JanBoehmer 16.02.2023 15:17

«Это зависит от вас» — это не то, с чего вы должны начинать свой ответ. Предоставьте точные инструкции о том, как решить проблему

Nico Haase 16.02.2023 15:23

Большой! Обратите внимание, что автоматическое обновление файлов «примеров» такого типа может быть вообще невозможно автоматически, поскольку они доступны для редактирования пользователями в своих проектах, поэтому они не находятся в поставщике. Лучше всего для обновления синтаксиса, связанного с PHP, может быть что-то вроде PHP-CS-Fixer с соответствующими правилами, но ваш пример функций не будет работать с этим, поскольку для этого требуется старый способ определения возвращаемых типов через PHPDoc.

Destroy666 16.02.2023 15:27

@Nico Haase ответ был точным, потому что он упомянул следующие изменения вручную - больше ничего нельзя добавить ... Придирки к формулировкам ничего не приносят, IMO. Но я редактирую ответ, чтобы отразить фактический вопрос сейчас.

Destroy666 16.02.2023 15:32

В исходном ответе не упоминался ни один конкретный шаг

Nico Haase 16.02.2023 15:42
Ответ принят как подходящий

Изменения в скелете нового приложения Laravel можно просмотреть на Github с помощью инструмента сравнения: https://github.com/laravel/laravel/compare/9.x...10.x

(Вы можете сделать это локально, используя клиент Git с графическим интерфейсом или командную строку Git.)

Эти изменения можно превратить в файл .patch, который затем можно использовать для применения к своему приложению. Github снова предоставляет довольно простой способ сделать это; https://github.com/laravel/laravel/compare/9.x...10.x.patch.

Когда у вас есть файл .patch, сохраненный локально, вы можете применить его в своем репозитории, используя git apply <path-to-patch-file>. В большинстве случаев это должно применяться чисто.

This is, to be clear, not a replacement for following the full upgrade guide at https://laravel.com/docs/10.x/upgrade, as it will only make the tweaks necessary for the default app skeleton; it will not update your own code you wrote in Laravel in any way.

Другие вопросы по теме