質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

1039閲覧

可変長引数を使用した際にphp_codesnifferがエラーを出す。

tomomo

総合スコア430

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/02/19 07:59

php_codesnifferを使って一定の規約に沿って書いているのですが、可変長引数を使用した際にエラーが出てしまいます。
...$fileNames←こういうのです。

# エラー内容 Doc comment for parameter "...$fileNames" missing Doc comment for parameter $fileNames does not match actual variable name ...$fileNames

今、phpcs:ignoreを使って一時対応しています。
つまりphpcs:ignoreの次の行がエラーが出ている所となります。
以下のようなmixedを書いてもだめでした。

php

1// phpcs:ignore 2/** 3 * View File 4 * 5 * // phpcs:ignore 6 * @param mixed $fileNames Fiename 7 * 8 * @return response 9 */ 10public function show(...$fileNames) 11{ 12 $fileName = implode('/', $fileNames); 13 : 14}

開発にはVSCodeを使用しており以下のように定義しています。

  • .vscode/settigns.json
{ "phpsab.fixerEnable": true, "phpsab.snifferEnable": true, "phpsab.snifferMode": "onSave", "phpsab.standard": "./php-coding-ruleset.xml", "phpsab.executablePathCS": "./vendor/squizlabs/php_codesniffer/bin/phpcs", "phpsab.executablePathCBF": "./vendor/squizlabs/php_codesniffer/bin/phpcbf", "[php]": { "editor.formatOnSave": true, "editor.defaultFormatter": null }, : }
  • php-coding-ruleset.xml
<?xml version="1.0" encoding="utf-8" ?> <rulset name="My Project"> <config name="installed_paths" value="vendor/codeigniter4/codeigniter4-standard/CodeIgniter4"/> <rule ref="vendor/codeigniter4/codeigniter4-standard/CodeIgniter4/ruleset.xml"/> <exclude-pattern>*/vendor/*</exclude-pattern> <exclude-pattern>*/vendors/*</exclude-pattern> <exclude-pattern>writable/**/*</exclude-pattern> </rulset>

何か書き方が悪いのか、ルールが足りない(書いて回避できる)のか...。

ご教示いただけないでしょうか。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

解決しました。

...@paramに加えることにより、エラーにはならなくなるようです。
@param mixed $fileNames FileNames

@param mixed ...$fileNames FileNames

投稿2021/02/21 07:48

tomomo

総合スコア430

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

show('foo.txt', 'bar.txt', 'baz.txt');
みたいにして呼びたいのだと察しますが、それ
show(['foo.txt', 'bar.txt', 'baz.txt']);
でも良くないですか?

であれば、

php

1public function show($fileNames) 2{

で受け取れるんですが。

php

1public function show(array $fileNames) 2{

って意味で。

投稿2021/02/19 09:10

編集2021/02/19 09:11
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomomo

2021/02/19 09:55

解答ありがとうございます。 該当の記述、フレームワークのルーティングに沿ってる節があります。 $routes->get('file/show/(.+)', 'File::show/$1'); (.+)は a.jpgでもあり、b/a.jpgでもあり、c/b/a.jpgでもあり。 で、$1が可変長の配列が入ってくるのです。 例えば先述した最後のであれば [ 0 => 'c', 1 => 'b', 2 => 'a.jpg'] みたいな感じです。 勿論上記のルーティングを弄れば('File::show/$1'をfunctionとか)とも思ったのですが、そもそもphp_codesnifferの其れで、可変長引数を受け入れてくれる書き方とか回避方法とかないのかなと思ったのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問