• ベストアンサー

PHPの@includeとは?

現在PHPのソース解析を行っております。 初心者なのですが、実際動いている本格的なPHPソースを解析して勉強するように言われております。 その中で、@includeというものが度々出てくるのですが、普通のincludeとは何が違うのでしょうか? 調べてみましたが、http://php.net/manual/ja/function.include.phpこちらではよくわかりませんでした。 @が付くと具体的にどのようなことが起こるのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ついでにだけど http://www.y2sunlight.com/water/webman/php1/1I.4.html あたりを読んでおくことを奨める。 >これを付けると、エラー出力が抑制され、また致命的エラーが発生してもスクリプトが終了しなくなります。 致命的なエラーはエラーの内容も示さずにスクリプトは終了してしまいます。 あなたが示したURL先にもしっかりと「警告」として >現在、エラー制御演算子プレフィックス"@"は、スクリプトの実行を 終了するような致命的なエラーの出力さえ抑圧します。このため、ある関数の エラー出力を抑制するために "@" を使用した場合、その関数が 利用できなかったり、ミスタイプがあった場合でも、原因を示すことなく その場所でスクリプトは終了してしまいます。 と書かれています。 簡単なサンプルだけど a.php <?php @include "b.php"; echo "テスト"; ?> b.php <?php ecgo "aa"; ?> これ実行してみたらわかると思います。 「@」を付けてincludeを実行すると何も表示されないで終了します。 「@」を付けないでincludeをした場合には「Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in」と言うエラーが発生します。

fk710b
質問者

お礼

ご丁寧にありがとうございます。 理解できました!

その他の回答 (1)

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

「@」はエラー制御演算子です。 http://www.php.net/manual/ja/language.operators.errorcontrol.php これを付けると、エラー出力が抑制され、また致命的エラーが発生してもスクリプトが終了しなくなります。 include で@を使うのは、たとえばプラグインなど後から追加した外部PHPファイルを読み込む時に、 それでエラーが発生しても本来の動作に影響しないようにするため、といった目的などでしょう。

fk710b
質問者

お礼

ありがとうございますっ。 検索でひっかからなかったので、本当に助かりました。

関連するQ&A

  • requireとincludeどっちを使えばいいのでしょう?

    題名にもある通り、便利な関数やdefineで定義した定数などを別ファイルにしてそれをインクルードしたいとき、一般的にはincludeとrequireどちらを使えばよいのでしょうか? また、includeのほうが軽くなるということはあるのでしょうか? マニュアルではincludeは呼び出したときに何度でも呼び出される旨 http://www.php.net/manual/ja/function.include.php かいてありますが、実践でどのようにつかえばよいかわかりません。 どなたか、ヒントでもかまいませんのでおしえていただけないでしょうか? 皆様は、どちらをどのようにお使いになってらっしゃいますか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • includeとinclude_onceの使い分け

    まずマニュアルを。 ------------------------------------------------------ PHP: include_once - Manual http://www.php.net/manual/ja/function.include-once.php include_once 命令は、スクリプトの実行時に指定したファイルを読み込み評価します。この動作は、include 命令と似ていますが、ファイルからのコードが既に読み込まれている場合は、再度読み込まれないという重要な違いがあります。その名が示す通り、ファイルは一度しか読み込まれません。 include_once は、スクリプトの実行時に同じファイルが複数回読み込まれ、評価される可能性がある場合に、関数の再定義や 変数値の再代入といった問題を回避するために一回だけ読み込ませるために使用します。 ------------------------------------------------------ …。表面的な機能の違いはわかりました。しかしそれをどう使い分けるのかの説明はなく、分かりませんでした。 よく分からない点は以下です。 ・同じファイルを何度も「include」もしくは「include_once」するケース ・あえて何度も記述しながら実際には1度しか評価してほしくないケース ・何度も記述して、そのつど評価したいケース これらについて例を挙げて教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpマニュアルの検索機能が機能しない件

    ど素人がphpを勉強中です。 関数の意味を調べたい時、 http://www.php.net/manual/ja/indexes.php 上記、関数マニュアル一覧から、Ctrl+Fの検索で、例えば『implode』で検索してみても、 http://php.net/manual/ja/function.implode.php このページが見つかりません。 わざわざGoogleから検索しないと出てきません。 とても不便です。 どうしたらいいでしょうか?

    • ベストアンサー
    • PHP
  • phpのマニュアルの質問です。

    phpのマニュアルの見方がいまいち分かりません。 http://www.php.net/manual/ja/function.fopen.php resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) 上記の例ですと、 ◎「string」「bool」これはどういう意味でしょうか?続くのが必ず変数なのはなぜでしょうか? ◎関数の中の引数の[ ]大カッコは何を意味してるでしょうか? 初歩的な質問ですが教えてください。

    • ベストアンサー
    • PHP
  • phpで複数のファイルのインクルード方法

    phpの勉強の為に、他人が作ったプログラムを見ました。 すると、クラスごとにファイルを分けていました。 そのファイルの数は、かなりの数があります。 普通に考えると、必要のたびにインクルードする方法が考えられます。 しかし、それだとかなり面倒だと思います。 そのプログラムを解析すればいいのですが、今の実力では出来ません。 何か、複数のファイルを一気にインクルードする定石などがあるのでしょうか? たとえば、フォルダに入っているファイル名を配列に入れ、forなどでincludeする方法でもしているのでは?と予想しています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • ■includeに関して■

    どうも^^ PHPでプログラミングをしていたら ふと思ったので質問させていただきます。 ※オブジェクト指向では書いていません。 (「function 関数名{ }」という形で書いてます) ソースを見やすくするために関数を別のファイルに書いているので よく include を使うのですが、やっぱりincludeする側のソースが長いと プログラム実行速度も遅くなりますよね? あともう1つ質問なんですが 関数(機能)ごとに1つずつソースを書いたほうがよいのでしょうか? それとも、関数を1つのファイルにまとめて書いたほうがよいのでしょうか? 自分の考えでは・・・  まとめてソースを書いたら、使わない関数も当然でてくると思います。  その場合 include すると余分な関数も読み込んでしまい  結果、実行速度が遅くなる。。。という予感がするのですが。 質問ばかりですいません;;

    • ベストアンサー
    • PHP
  • includeすると?が入る

    win2000、PHP5.3.0にて、includeをすると?が入ってしまいます。 具体的には -- a.php -- <?PHP print "A"; include 'b.php'; print "B"; ?> -- b.php -- C <?PHP print "D"; ?> E -- 結果 -- A?C DE B ブラウザ上ではこの?が見えないのですが、ソース上ではあります。 この?を何とかしたいのですが、これは何かの設定ですか?仕様ですか?不具合ですか?

    • ベストアンサー
    • PHP
  • PHPファイルをincludeしてHTML表示する

    お世話になります。 PHP含めプログラム初心者の者です。 どうか知恵をお貸しください。 現在制作しているHTMLサイトがあります。レイアウトはCSSです。 そのうちのひとつのコンテンツのブログページをサイト内WordPressで更新できるようにしたいと考えています。本来なら全てのページをWordPress化したほうがいいのでしょうが、新たにまたいろいろ記述する時間がないもので、とりあえずはblog.htmlなページのコンテンツ表示領域にWordPressで作ったindex.phpが表示されたらいいなと考えております。 ネットでいろいろ調べた結果、「phpファイルをincludeする」という方法によって、それをhtmlファイルで表示する方法があるようです。そこで質問なのですが、具体的にどのようにソースを記述すればそれは可能になるのでしょうか。 (1).htaccessに「AddType application/x-httpd-php .html」と記述する。 (2)表示したいHTML部分に「include(dirname(__FILE__).'/index.php');」と記述する。 とありましたがそれだけではできませんでした。具体的にそうしればいいか教えていただけないでしょうか。(htmlの拡張子をshtmlにするとかいう情報もありましたが定かではありません。)PHPに関しては本当に初心者な者で、変な質問をしているかもしれませんがどうかよろしくお願い致します。 ※参考にした情報ソースは下記です。 http://www.yusk.org/memo/php-memo/php_include_001.html ※HTMLソースは下記です。 <body> <div id="header"> ~略~ </div> <div id="contens"> <div id="leftmenu"> ~略~ </div> <div id="rightmenu"> <div id="rightbox-inside"> <div id="rightbox-inside-txt"> <p class="title">BLOG</p> <p class="standard"> include(dirname(__FILE__).'/index.php');(←ここにブログを表示させたい) </p> </div> <div style="clear:both;"></div> <div id="rightbox-buttom"> </div> </div> </div> </div> <div id="footer"> ~略~ </div>

    • ベストアンサー
    • PHP
  • javascriptで切り替えて、php(include)でソースを呼

    javascriptで切り替えて、php(include)でソースを呼び出すということを行いたいのですが…。 インラインフレーム内のページで現在のものはこのようになっています。 (ラジオボタンで即座にフレーム内ページを変更) <script language="JavaScript"> <!-- function kirikae(addw) { parent.searchFrame.location.href=addw } //--> </script> <ul> <li> <input type="radio" name= "dEdit" value="" id="dEdit01" onClick="kirikae('/m/dd.html')"> </ul> ~~~~ これを、親ページでのincludeに変更したいのですが、現状よい方法が浮かびません。 以下のような形態で、ラジオボタンで表示するソースを変更、は変えずに、URL変更していたものをソースをincludeする、に変更したい考えです。 お知恵をお貸しください。 <ul><input type="radio" name= "dEdit" value="" id="dEdit01" onClick="~~~~~"> </ul> <?php include("/m/dd.html")?>

    • 締切済み
    • PHP
  • PHP で暗号化して何かを送信することってあるのでしょうか?

    こんにちは、趣味で PHP を触っています。 とても初歩的な質問になってしまうと思いますが、よろしくお願いします。 PHP では crypt 関数で暗号化することができるらしいのですが、実際にこれを使わなければいけない場合とはどのような時なのでしょうか? http://jp2.php.net/manual/ja/function.crypt.php PHP で処理したことを MySQL などのデータベースに書き込む場合、主にサーバー内での処理なので外部から見られることなんてないと思っていましたが、見ることは可能なのでしょうか? それともう一つ質問がありまして、マニュアルには「復号するための関数はありません。 crypt() が使用しているのは単方向アルゴリズムだからです。」とありますが、それだと暗号化すると二度とその情報が何かわからなくなるのではないでしょうか? 何か複合化する方法があるのですか? よろしくお願いします。

    • ベストアンサー
    • PHP