Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not override the property $ _accessible type. #10

Merged
merged 1 commit into from
Dec 10, 2021

Conversation

isanasan
Copy link
Contributor

@isanasan isanasan commented Dec 8, 2021

#7 こちらのissueに対応する

検証手順

既存のプラグインを削除

rm -rf vendor/lancers/cakephp-generation-gap-pattern-model-baker/

プラグインをclone

$ cd www/lancaers_admin
$ mkdir plugins/GenerationGapModelBaker
$ git clone git@github.com:LancersDevTeam/cakephp-generation-gap-pattern-model-baker.git plugins/GenerationGapModelBaker/
$ cd plugins/GenerationGapModelBaker

本PRのブランチに切り変え

git switch 20211208_fix_entity_typehint

autoloadの設定

composer.json

    "autoload-dev": {
        "psr-4": {
            "App\\Test\\": "tests/",
-           "Cake\\Test\\": "vendor/cakephp/cakephp/tests/"
+           "Cake\\Test\\": "vendor/cakephp/cakephp/tests/",
+           "GenerationGapModelBaker\\": "plugins/GenerationGapModelBaker/src/"

        }
    },

autoloadファイルを更新

php composer.phar dumpautoload

コマンド実行

bash-4.2# bin/cake bake extended_model cities
One moment while associations are detected.

Baking table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php`

Baking entity class for City...

Creating file /var/www/lancers_admin/src/Model/Baked/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Entity/City.php`

Baking entended table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Table/CitiesTable.php`

Baking entended entity class for City...

Creating file /var/www/lancers_admin/src/Model/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Entity/City.php`

Baking test fixture for Cities...

Creating file /var/www/lancers_admin/tests/Fixture/CitiesFixture.php
Wrote `/var/www/lancers_admin/tests/Fixture/CitiesFixture.php`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\CitiesTable ...

Creating file /var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php
Wrote `/var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php`
Done

修正対象のファイルを静的解析

bin/phpstan analyse src/Model/Baked/Entity/City.php

テスト証跡

修正前

bash-4.2# bin/cake bake extended_model cities
One moment while associations are detected.

Baking table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php`

Baking entity class for City...

Creating file /var/www/lancers_admin/src/Model/Baked/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Entity/City.php`

Baking entended table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Table/CitiesTable.php`

Baking entended entity class for City...

Creating file /var/www/lancers_admin/src/Model/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Entity/City.php`

Baking test fixture for Cities...

Creating file /var/www/lancers_admin/tests/Fixture/CitiesFixture.php
Wrote `/var/www/lancers_admin/tests/Fixture/CitiesFixture.php`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\CitiesTable ...

Creating file /var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php
Wrote `/var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php`
Done
bash-4.2# bin/phpstan analyse src/Model/Baked/Entity/City.php
Note: Using configuration file /var/www/lancers_admin/phpstan.neon.
 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

 ------ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  Line   City.php
 ------ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  37     PHPDoc type array of property App\Model\Baked\Entity\City::$_accessible is not covariant with PHPDoc type array<bool> of overridden property Cake\ORM\Entity::$_accessible.
         💡 You can fix 3rd party PHPDoc types with stub files:
            https://phpstan.org/user-guide/stub-files
 ------ -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------


 [ERROR] Found 1 error

修正後

bash-4.2# bin/cake bake extended_model cities
One moment while associations are detected.

Baking table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Table/CitiesTable.php`

Baking entity class for City...

Creating file /var/www/lancers_admin/src/Model/Baked/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Baked/Entity/City.php`

Baking entended table class for Cities...

Creating file /var/www/lancers_admin/src/Model/Table/CitiesTable.php
Wrote `/var/www/lancers_admin/src/Model/Table/CitiesTable.php`

Baking entended entity class for City...

Creating file /var/www/lancers_admin/src/Model/Entity/City.php
Wrote `/var/www/lancers_admin/src/Model/Entity/City.php`

Baking test fixture for Cities...

Creating file /var/www/lancers_admin/tests/Fixture/CitiesFixture.php
Wrote `/var/www/lancers_admin/tests/Fixture/CitiesFixture.php`
Bake is detecting possible fixtures...

Baking test case for App\Model\Table\CitiesTable ...

Creating file /var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php
Wrote `/var/www/lancers_admin/tests/TestCase/Model/Table/CitiesTableTest.php`
Done
bash-4.2# bin/phpstan analyse src/Model/Baked/Entity/City.php
Note: Using configuration file /var/www/lancers_admin/phpstan.neon.
 1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%



 [OK] No errors

@isanasan isanasan added the bug Something isn't working label Dec 8, 2021
@isanasan isanasan self-assigned this Dec 8, 2021
Copy link
Contributor

@mamy1326 mamy1326 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

対応ありがとうございます!
以下に予想経緯を書きますと

  • 最初に作った時は、vendor 配下の entity.twig を使ってカスタマイズした
    • vendor/cakephp/bake/templates/bake/Model/entity.twig
  • その際、該当部分は既存のコードだった
  • CakePHP のバージョン(bake のバージョン)が上がって変更になった
  • 追随できていなかった

だと思います。
これは作った当初から CI で差分検知できないか考える必要あるなと思ってたんですが未だできておらずでした。

よって取り急ぎ Issue 立てました。
#11

コード、テストOKです。
検証環境で確認しました。

@isanasan isanasan merged commit 5ceb87b into master Dec 10, 2021
@isanasan isanasan deleted the 20211208_fix_entity_typehint branch December 10, 2021 00:42
@isanasan
Copy link
Contributor Author

本番環境リリース後、正しく動作することを確認しました。

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants