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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

2回答

2380閲覧

Laravelで同クラス内の関数を呼び出したい

lutan

総合スコア1

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2021/09/29 15:36

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(Laravel5)で顧客管理なシステムを作っています。
C#を一年ほど勉強していました。
PHPはまだ初めて1ヵ月も満たない初心者です。不慣れな質問で申し訳ございません。

■やりたい事
同クラス内で関数を呼びだしinsertが終了するとtrueを返したいだけですが、中々うまくいきません。

ソースコード

※同クラス上部省略 $ret = $request->status; $response = insert(ret); return response()->json($response); } /** * insert */ static function insert($ret){ Log::debug('log_start:'.__FUNCTION__); $str = "insert into users (" ."create_user_name, " ."post_number, " ."address, " ."create_user_tel, " ."create_user_fax, " ."create_user_mail, " ."password, " ."create_date, " ."update_user_id, " ."update_date " .")values( " ."'$name', " ."'$post', " ."'$address', " ."'$tel', " ."'$fax', " ."'$mail', " ."'$password', " ."now(), " ."1, " ."now()" .")"; DB::insert($str); // Log::debug('log_end:'.__FUNCTION__); return true; }

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

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

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

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

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

rin_san

2021/09/29 17:46

self::insert($ret); と書いてもダメなようですが、どのようなエラーが出ているのでしょうか?
lutan

2021/09/29 18:09

遅くにありがとうございます。 検証ツール(js) POST http://localhost/kasegu_management/public/createUserValidation 500 (Internal Server Error) デバック [2021-09-30 02:49:01] local.ERROR: Undefined variable: name {"exception":"[object] (ErrorException(code: 0): Undefined variable: name at C:\\xampp\\htdocs\\kasegu_management\\app\\Http\\Controllers\\User\\UserController.php:163) すみません。 nameがわからない。というエラーになっています。 $name = $request->input('name'); insertの親元の初めにRequestから受け取ったデータを一番上に入れています。 この場合、insertにもrequestを渡してあげないといけないと思いますが、 そのinsert関数内でreturn trueといった返却は可能ですか?
lutan

2021/09/29 18:10

/** * 入力項目validation->insert->trueを返す * 初期値;true */ public function createUserValidation(Request $request) { // 値取得 $name = $request->input('name'); $mail = $request->input('mail'); $post = $request->input('post'); $address = $request->input('address'); $tel = $request->input('tel'); $fax = $request->input('fax'); $password = $request->input('password'); $password_conf = $request->input('password_conf'); $agree = $request->input('agree'); /** * validation */ // returnの出力値 $response = []; // 初期値 $response["status"] = true; // rules $rules = []; $rules['name'] = "required|string"; $rules['mail'] = "required|email"; $rules['post'] = "required|string"; $rules['address'] = "required|string"; $rules['tel'] = "required|string"; $rules['fax'] = "string"; // 英数字か判定 $rules['password'] = "required|alpha_num"; $rules['password_conf'] = "required|alpha_num"; // 個人情報保護方針=ture:false if($agree == 'false'){ $rules['agree'] = "boolean"; }; // メッセージ $messages = []; $messages['name.required'] = "名前は必須です。"; $messages['name.string'] = "名前の形式が不正です。"; $messages['mail.required'] = "メールアドレスは必須です。"; $messages['mail.email'] = "メールアドレスの形式が不正です。"; $messages['post.required'] = "郵便番号は必須です。"; $messages['post.string'] = "郵便番号の形式が不正です。"; $messages['address.required'] = "住所は必須です。"; $messages['address.string'] = "住所の形式が不正です。"; $messages['tel.required'] = "Telは必須です。"; $messages['tel.required'] = "Telの形式が不正です。"; $messages['fax.string'] = "Faxの形式が不正です-。"; $messages['password.required'] = "パスワードは必須です。"; $messages['password.alpha_num'] = "パスワードは半角英数字で入力して下さい。"; $messages['password_conf.required'] = "パスワード再入力は必須です。"; $messages['password_conf.alpha_num'] = "パスワード再入力は半角英数字で入力して下さい。"; // 個人情報保護方針=ture:false if($agree == 'false'){ $messages['agree.boolean'] = "個人情報保護方針をチェックして下さい。"; } // 配列デバック $arrString = print_r($messages , true); Log::debug('messages:'.$arrString); // validation判定 $validator = Validator::make($request->all(), $rules, $messages); // error処理 if ($validator->fails()) { // ajax返却定数 $keys = []; $msgs = []; // errorsをjson形式に変換(trueの場合、連想配列) $ary = json_decode($validator->errors(), true); // ループ&値をvalueに設定 foreach ($ary as $key => $value) { // キーを配列に設定 $keys[] = $key; // 値(メッセージ)を設定 $msgs[] = $value; } // keyデバック $arrString = print_r($keys , true); Log::debug('keys_messages:'.$arrString); // response値設定 // status = falseの場合js側でerrorメッセージ表示 $response["status"] = false; $response['msg'] = "入力を確認して下さい。"; $response["messages"] = $msgs; $response["errkeys"] = $keys; return response()->json($response); } /** * メールアドレス重複確認 */ $str = "select * from users " ."where create_user_mail = " ."'$mail'"; $data = DB::select($str); // 該当データが存在する場合row=1:false if(count($data) == 1){ Log::debug('メールアドレスが重複'); $response["status"] = false; return response()->json($response); } /** * insert */ // $ret = $request->status; $response["status"] = self::insert($request); return response()->json($response); } /** * insert */ public function insert($request){ Log::debug('log_start:'.__FUNCTION__); // 値取得 $name = $request->input('name'); $mail = $request->input('mail'); $post = $request->input('post'); $address = $request->input('address'); $tel = $request->input('tel'); $fax = $request->input('fax'); $password = $request->input('password'); $password_conf = $request->input('password_conf'); $agree = $request->input('agree'); $str = "insert into users (" ."create_user_name, " ."post_number, " ."address, " ."create_user_tel, " ."create_user_fax, " ."create_user_mail, " ."password, " ."create_date, " ."update_user_id, " ."update_date " .")values( " ."'$name', " ."'$post', " ."'$address', " ."'$tel', " ."'$fax', " ."'$mail', " ."'$password', " ."now(), " ."1, " ."now()" .")"; DB::insert($str); $ret = true; // Log::debug('log_end:'.__FUNCTION__); return ret; }
lutan

2021/09/29 18:11

それともrequestから受け取ったデータ自体を関数化するのでしょうか? コンストラクタで先に値をいれるのでしょうか? ※コンストラクタはインスタンスの時のみ一番初めにとおりますよね? もし簡単な例文等いただければ幸いです。
m.ts10806

2021/09/29 22:02 編集

質問は編集できます。コメント欄ではなく質問本文を編集して追記してください。 ただ「PHPを始めて」1か月ならフレームワークに手を出すのは早すぎると思います。特にLaravelは「Web職人のためのフレームワーク」といううたい文句がある通り、他のフレームワークより敷居は高いです。
guest

回答2

0

LaravelというよりPHPのClass構造についてPHPのリファレンスを見てみてください。
https://www.php.net/manual/ja/language.oop5.static.php

今回の件についてはリファレンスよりこちらのページのほうがわかりやすいかもしれません。
https://techacademy.jp/magazine/29453

php

1$ret = $request->status; 2 3$response["status"] = self::insert(ret);→この部分でエラーになっています。

ret じゃなくて $retです。

Laravelをお使いなのであれば、生のクエリーを書かずにEloquentをお使いになられたほうがよろしいかと。

投稿2021/09/29 17:12

rin_san

総合スコア97

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

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

lutan

2021/09/29 17:34

static=静的な変数の定義→同クラス内でも呼び出し可能 ※ self::insert($ret)等。サイトによってselfが不要と書いているところもあります。 通常時 インスタンス化が必要である。 ※thisを使用 $を付けても同じ結果です。 Eloquent→一度検索してみます。
lutan

2021/09/29 17:36

Eloquent→モデルをコマンドで作成し簡易的な文でDBとやり取りをするのですね!! 参考にします。
rin_san

2021/09/29 17:48

> $を付けても同じ結果です。 $がないと定数扱いになります。未定義の定数だとエラーになりますが…。 teratailに転機するときに漏れただけですか?どのようなエラーが出ているか追記ください。
lutan

2021/09/29 18:14

追記しました。
rin_san

2021/09/30 01:17

追記くださったエラー部分に「UserController.php:163」163行目とありますが 「$response["status"] = self::insert(ret);→この部分でエラーになっています。」部分がすでに163行目を超えています。 UserControllerの冒頭にnamespaseやuseなどがあることを考えると、さらにズレは大きくなるはずです。 エディターの163行目はどのような記述になっていますか? フレームワークに触れる前にPHPの基礎を学んでみるのも良いかもしれません。プログラム歴が1年ほどあるのであれば、基礎の本を1冊、1週間もあれば一通り理解できるかと思います。
guest

0

self::insert

投稿2021/09/29 16:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

lutan

2021/09/29 17:03

こういう事でしょうか? * insert */ $ret = $request->status; $response["status"] = self::insert(ret);→この部分でエラーになっています。 return response()->json($response); /** * insert */ public static function insert($ret){ Log::debug('log_start:'.__FUNCTION__); $str = "insert into users (" ."create_user_name, " ."post_number, " ."address, " ."create_user_tel, " ."create_user_fax, " ."create_user_mail, " ."password, " ."create_date, " ."update_user_id, " ."update_date " .")values( " ."'$name', " ."'$post', " ."'$address', " ."'$tel', " ."'$fax', " ."'$mail', " ."'$password', " ."now(), " ."1, " ."now()" .")"; DB::insert($str); $ret = true; // Log::debug('log_end:'.__FUNCTION__); return ret; }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問