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

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

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

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

PHP

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

Q&A

解決済

1回答

1836閲覧

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

tkm0604

総合スコア552

Laravel

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

PHP

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

0グッド

0クリップ

投稿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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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

総合スコア80765

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

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

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問