人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

php学習初心者です。require_once(に限らずですが)の書式について教えてください。ネットで検索すると、いかの3つの記述があります。

require_once("Auth/Auth.php");
require_once "Auth/Auth.php";
require_once 'Auth/Auth.php';

どの記述で書くのが一番お勧めか、理由もできればよろしくお願いします。

●質問者: tomoko2
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP お勧め つの ネット 初心者
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● Banias
●30ポイント

質問のリストにはありませんが、


require_once('Auth/Auth.php');


と書くことをお勧めします。


理由は下記の通り。

  1. require_onceは一種の関数なので、引数を (...) に入れた方がシックリくる。
  2. ダブルクォーテーションは置換処理をするので、純粋な文字列だけの場合はシングルクォーテーションで囲んだ方がバグや脆弱性の原因にならなくてすむ。
◎質問者からの返答

回答ありがとうございます。

require_once('Auth/Auth.php');という記述は、検索してもなぜかあまり出てこないんですよね。。

回答者様のアドバイスのとおり、

require_once('Auth/Auth.php');

をMyコーディング規約として採用したいと思います。

素朴な質問にご回答くださりありがとうございます。


2 ● うぃんど
●30ポイント

【1】かっこは必要不要?

phpの中枢に組み込まれていてphpの根幹を成す「言語構造」では基本的に(かっこ)は不要

追加機能である「関数」にはパラメータの有無にかかわらず形式として(かっこ)が必要となっています

require_onceは言語構造に含まれており、基本的には(かっこ)不要なものです

【2】シングルorダブル?

ダブルクォートで囲むと、変数やエスケープコードが入っていないかを検出する処理が必ず入るため、

変数やエスケープコードを含まないのであれば、単純に受け渡すだけのシングルクォートのほうが無駄なく処理が進みます

【3】結局は?

状況に応じて選択

通常 require_once 'Auth/Auth.php';

変数などを含む場合 require_once "{$hoge}/Auth.php";

式を含む場合 require_once require_once(dirname(__FILE__) . "/Auth.php");

◎質問者からの返答

詳しいご回答ありがとうございます。

学習中の身としては、「言語構造に含まれる」か「関数」かを意識したいですね。

で、

【3】でご教示いただきました内容に納得です。

ありがとうございます。


3 ● a-kuma3
●30ポイント

三つ、というか、以下の組合せの四つです。


まず、括弧については、省略しない方が良いでしょう。

引数が長くなったり、複数ついたときに、関数の終わりが「ここ」と分かる方が、多少なりともソースが見やすくなります。

ソースを見やすくすることで、引数の指定を間違う可能性が、少しでも減ります。


ダブルクォートかシングルクォートかは、どちらがお勧め、というのではなく、機能的に違いがあります。

固定の文字であれば、どちらでも構わないんですが、ダブルクォートの場合には、変数を内部に展開してくれます。

$file = 'Auth.php';

require_once("Auth/${file}");

文字列の一部が変わるときに使えます。

文字列の結合でも同じなんですが、場合によって、見やすさで使い分ければ良いと思います。

$file = 'Auth.php';

require_once('Auth/' . $file);

機能的にシンプルなシングルクォートの方が、処理が早いのか、という勘ぐりもあるかと思いますが、

よほどのことが無い限り、顕著な差は出てきません。

お手軽なのが php の良いところだと思うので、「後で変数展開をするかもしれないから、ダブルクォートにしておこうか」程度の認識で構わないと思います。

◎質問者からの返答

ご回答ありがとうございます。

ソースの可読性や、後の変更のしやすさも考えてのコーディングですよね。

細かな点ですが、決めておくと全体がピシッとするものだと思うので。

ご回答者様それぞれのコーディング哲学がお伺いできて大変興味深いです。

私はどうしようか、ちょっと迷ってきました。

よく考えてみようと思います。

ご教示ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ