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

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

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

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

Q&A

解決済

3回答

7725閲覧

名前がアンダースコアで始まるメソッドについて

intron

総合スコア36

PHP

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

0グッド

0クリップ

投稿2020/02/17 15:31

作った人がもういないシステム(Laravelを使用)の改修を命じられてコードを呼んでいるのですが、よくわからないところがあります。
モデルクラスのメソッドの中に「名前がアンダースコアで始まる」メソッドがあります。全部ではなく一部です。
名前がアンダースコアで始まるメソッドは、例えば "_getAll()" のようにすべて "_get〇〇()" です。
何か意図があって一部だけアンダースコアで始まる名前にしたのかと思うのですが、その意図がわかりません。
ググると
・JavaScriptだとプライベートな関数、変数はアンダースコアで始めるという慣習があるよう
・CakePHPの古いバージョンではアンダースコアで始まるメソッドにするとプライベートメソッドになる。
という情報はありましたが、JavaScriptじゃないしCakePHPでもないし。それに件のメソッドは全部publicだし。
作った本人に聞ければいいのですがもう会社にいません。連絡先も知りません。
「PHPやLaravelでこういう場合にメソッド名をアンダースコアで始める」みたいなコーディングルールとか慣習とか、そういうのをご存じでしたら教えてください。

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

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

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

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

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

guest

回答3

0

ベストアンサー

ごく一般論で言うと、プライベートメソッドでしょうけど、強制された保証のない規約を想定しても無意味です。

エディタやレビュアーがチェックしない場合、規約は機能しません。
たとえ機能していても、一人開発のオレオレ規約なんて、どこに例外が潜むかわかりません。

見切りをつけて、通常のメソッドと同じく扱い、可能であればリファクタリングの際に適切に修正してあげると良いです。

投稿2020/02/17 22:21

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2020/02/18 00:36

ですね。 いない人のオレオレ仕様に悩む時間がもったいない
intron

2020/02/18 13:28

> ごく一般論で言うと、プライベートメソッドでしょうけど、強制された保証のない規約を想定しても無意味です。 これがパブリックメソッドなんです。 「保証のない規約を想定しても無意味」と言われれば、そうですね。想像することしかできないし、その想像が合っている保証もないし。 悩むのはやめて改修のついでにリファクタリングしてメソッド名を変更します。 回答ありがとうございました。
guest

0

それに件のメソッドは全部publicだし。

そもそも、private なメソッドはありますか?

その人がpraivateなメソッドも作り、publicなアンダースコアで始まるメソッドも作っているのであれば謎ですね。

ちなみに、アンダースコアで始まるメソッドはクラス外から呼ばれていますか?
そのへんから探るしかなさそうな。。

php4まではアクセス修飾子が無かったので、
「アンダースコアで始めたメソッドはprivateってことな!」っていう慣習がメジャーでした。
その名残りかと思いますが。。

投稿2020/02/17 15:59

編集2020/02/17 16:09
faaa

総合スコア31

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

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

0

実際のコード提示されないとなんとも言えませんが
ハンガリアン記法の類なのではないかと。
その作った方のルールでアンダースコアつけてただけかなと。

あくまで推測しかできないので、どうしても知りたければ作った人にどんな手段でもいいので連絡を取って聞くしかありません。
引継ぎ資料が全くないとは思えませんが、ないのなら聞くしかありません。
会社が全く連絡先知らないわけではないと思いますよ。

投稿2020/02/17 22:10

m.ts10806

総合スコア80857

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問