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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

Laravel PHPDocの書き方が分からない。「has no type specified.

tkm0604
Fukusuke0604

総合スコア539

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

1回答

0グッド

0クリップ

318閲覧

投稿2022/10/28 08:23

Laravel9 エラーチェックにPHP-Stanを利用しています。
PHP-Stan実行後にファイル(ContactsSendmail.php)以下の箇所で、「has no type specified. とエラーが出ます。
しかし、このエラーの解決方法がわかりません。

エラーが出ている変数に型を定義してあげれば良いのだと思うのですが、いろんなサイト参考にいろんな書き方をしてもだめでした。
PHPStaのエラー内容によってはignoreしても良い。という記事も見受けられるのですが、拙い知識のため今回のPHPStanのエラーはどうしようもないのか、解決できるのか。の判断もわかりません。。。
解決方法があれば、教えてください。

ContactsSendmail.php

1<?php 2 3namespace App\Mail; 4 5use Illuminate\Bus\Queueable; 6use Illuminate\Contracts\Queue\ShouldQueue; 7use Illuminate\Mail\Mailable; 8use Illuminate\Queue\SerializesModels; 9class ContactsSendmail extends Mailable 10{ 11 use Queueable, SerializesModels; 12 13 // プロパティを定義 14 private $radio; 15 private $company_name; 16 private $contact_name_form; 17 private $kana; 18 private $tell; 19 private $zip; 20 private $add; 21 private $contact_body;

PHPStan

1------ ------------------------------------------------------------------------------- 2 Line app/Mail/ContactsSendmail.php 3 ------ ------------------------------------------------------------------------------- 4 13 Property App\Mail\ContactsSendmail::$radio has no type specified. 5 14 Property App\Mail\ContactsSendmail::$company_name has no type specified. 6 15 Property App\Mail\ContactsSendmail::$contact_name_form has no type specified. 7 16 Property App\Mail\ContactsSendmail::$kana has no type specified. 8 17 Property App\Mail\ContactsSendmail::$tell has no type specified. 9 18 Property App\Mail\ContactsSendmail::$zip has no type specified. 10 19 Property App\Mail\ContactsSendmail::$add has no type specified. 11 20 Property App\Mail\ContactsSendmail::$contact_body has no type specified. 12 ------ -------------------------------------------------------------------------------

ファイル全体は以下です。

ContactsSendmail.php

1<?php 2 3namespace App\Mail; 4 5use Illuminate\Bus\Queueable; 6use Illuminate\Contracts\Queue\ShouldQueue; 7use Illuminate\Mail\Mailable; 8use Illuminate\Queue\SerializesModels; 9class ContactsSendmail extends Mailable 10{ 11 use Queueable, SerializesModels; 12 // プロパティを定義 13 private $radio; 14 private $company_name; 15 private $contact_name_form; 16 private $kana; 17 private $tell; 18 private $zip; 19 private $add; 20 private $contact_body; 21 22 /** 23 * Create a new message instance. 24 * 25 * @return void 26 *@param array $inputs 27 */ 28 public function __construct($inputs) 29 { 30 // コンストラクタでプロパティに値を格納 31 $this->radio = $inputs['radio']; 32 $this->company_name = $inputs['company_name']; 33 $this->contact_name_form = $inputs['contact_name_form']; 34 $this->kana = $inputs['kana']; 35 $this->tell = $inputs['tell']; 36 $this->zip = $inputs['zip']; 37 $this->add = $inputs['add']; 38 $this->email = $inputs['email']; 39 $this->contact_body = $inputs['contact_body']; 40 } 41 42 /** 43 * Build the message. 44 * 45 * @return $this 46 */ 47 public function build() 48 { 49 // メールの設定 50 return $this 51 ->from('hello@example.com') 52 ->subject('自動送信メール') 53 ->view('contact.mail') 54 ->with([ 55 'radio' => $this->radio, 56 'company_name' => $this->company_name, 57 'contact_name_form' => $this->contact_name_form, 58 'kana' => $this->kana, 59 'tell' => $this->tell, 60 'zip' => $this->zip, 61 'add' => $this->add, 62 'email' => $this->email, 63 'contact_body' => $this->contact_body, 64 ]); 65 } 66} 67

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

2

ベストアンサー

has no type specified.
タイプが指定されていません。

各変数の型を指定してください。

いろんなサイト参考にいろんな書き方をしてもだめでした。

どういう書き方をしてどういう結果が出たのか提示されてないので分かりませんが、例えば

example

1private $kana; 23private string $kana;

https://www.php.net/manual/ja/language.types.declarations.php

多くの言語では変数宣言時に型まで指定しないとそもそも実行(ビルド・コンパイル)できないのが通例です。
そのため、このようなドキュメントでは型がない変数はNGとされるということになります。
ドキュメントも参考に。
https://docs.phpdoc.org/3.0/classes/phpDocumentor-Descriptor-Tag-BaseTypes-TypedVariableAbstract.html

投稿2022/10/28 09:07

編集2022/10/28 09:10
m.ts10806

総合スコア80030

spoofy_dragon, phper.k👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

2022/10/28 12:33

こちらの回答が他のユーザーから「説明が不足している回答」という指摘を受けました。

回答へのコメント

tkm0604

2022/10/29 01:51

ありがとうございます。 PHPDocにコメントで書くもんだと思い違いしておりました。 private $kana; ↓ private string $kana; この書き方でPHP-Stanエラーが消えました!!
m.ts10806

2022/10/29 02:03 編集

コメントに書いたところで変数の型が宣言されるわけではないですからね。 ただ、コメント書くとしてもやはり型は必要に思います。 型がないと @var unknown になりますから。
tkm0604

2022/10/29 02:54

「コメントに書いたところで変数の型が宣言されるわけではないですからね。」おっしゃる通りですね!! 勉強になりました!
m.ts10806

2022/10/29 03:42

はい。だから"説明が不足している回答"という修正依頼が的外れにも程があるなって。 未だに嫌がらせとかでやる人いるんですよね。指摘するには具体性が必要なはずの回答ですから。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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