• 締切済み

取得されるメモリについて

rokujiroの回答

  • rokujiro
  • ベストアンサー率53% (17/32)
回答No.1

質問内容が難しく回答の意味が合っているか分かりませんが..... 基本的にPHP関数においてrequire関数とinclude関数は同一の処理を行います。 主にinclude関数は下記の場合に使用します。 ・複数プログラムで共有する関数をまとめておく。 ・プログラム内で変更する可能性の多い箇所を外部に出しておく。 include関数の動作としては宣言したタイミングで呼び出し側プログラムにincludeファイルが組み込まれると考えた方が良いでしょう..... 変数について私が使用している方法は全ての関数で一つの配列を使用しています。 下記の例のようにすれば変数の受け渡しに無理が無くグローバル変数を使用しなくてもOKだと思います。 例) <? $common['a']='a'; $common['b']='b'; $common['c']='c'; kansu($common); exit; function kansu($common){ print "$common['a']<br>"; print "$common['b']<br>"; print "$common['b']<br>"; } ?> 長々となってしまいましたが回答内容は合っているでしょうか!?

参考URL:
http://jp.php.net/manual/ja/function.include.php
sakaki58
質問者

お礼

ありがとうございます。 なるほど。ファイルが分かれていてもincludeで呼び出すのであれば結局は1つのプログラムで作ったと同じ事なのですね。 今までグローバル変数に頼ったプログラムの書き方をしていたので例にあげていただいたプログラムを応用させて頑張ってみたいと思います。 ありがとうございました。

関連するQ&A

  • perlでのオブジェクト指向の書き方

    以下のPHPソースをPerlで書き直したいのですが、Perlのコンストラクタがイマイチわからないので どなたかご教授ください。 可能であれば以下のソースのperlバージョンを記載して頂けると幸いで御座います。 ○呼び出し側 ・index.inc require_once('common.inc'); require_once('db.inc'); class index {     var $objCommon= '';     var $objDB= '';     function index() {         $this->objCommon = new common;         $this->objDB = new db("mysql");     }     function main() {         //DB接続         $db_connect = $this->objDB->connect();         //DBから値を取得         $data = $this->objDB->sample($db_connect);     } } ○呼び出される側 ・db.inc class db{     var $db_dsn_type;     function db_wrap($db_type){         $this->db_dsn_type = $db_type;         $this->objCommon = new common;     }     各function } ・common.inc class common{     各function } ※コンストラクタなし

  • 外部ファイルの関数を使うには?

    phpで include_once('okok'); なら、そこで定義した関数や変数は使えるのですが、 perlで require "dame.pl"; として、dame.plで定義した変数を使おうとすると、 Global symbol "%hash_hensuu" requires explicit package name at test.pl line 16. となります。 パッケージや変数の輸出?など片言の言葉が思い浮かぶのですが、実際どのように書けば、外部ファイルの関数を使えるようになるのでしょうか?

    • ベストアンサー
    • Perl
  • アロー演算子について

    php素人です アロー演算子についてわかりやすく教えてください クラスとか使ったことありませんのでアロー演算子をみるとパソコンの前から逃げ出したくなります 質問1 アロー演算子を使うときはクラス内の変数などにアクセスするときだけですか?(普通はclassを使わない場合、アロー演算子は使わないのですか?) 質問2 他のファイルから呼び出す場合はrequire_onceなどをつかってからアロー演算子でよびだすのですか? 質問3 PDOもrequire_onceなどで呼び出してからつかってるのですか? 質問4 下記のようにclassを定義する前にnewでオブジェクトを出現させても大丈夫なんですか? 質問5 アロー演算子とはクラスから変数や関数を使うためのものですか?下記の場合、 $hoge変数にclass numberdayoの処理が詰まっているってことでしょうか? $hoge = new numberdayo(); $hoge ->number = 2; $hoge ->numberdayo(); class numberdayo{ public $number; function numberdayo(){ print($this -> number); } } 質問6 別の質問ですが、classをつかってない単なる関数functionは定義する前に呼び出せますか? hoge(); function hoge(){ print("関数"); } よろしくお願いします

    • ベストアンサー
    • PHP
  • classファイルの取り扱い方

    クラスファイルをnewをしてから関数を呼び出す場合と クラス名::関数名で呼び出す場合だとパフォーマンスやメモリの負担などの違いは在りますでしょうか? また、独自のpublic function関数のみのファイル(lib.php)をclassで囲ってあるのですが、 実際はincludeして扱うので、classで囲わなくても問題はないと思うのですが、どこのクラスにあるのかという目安として囲っています。 上記のファイル関数を呼び出す場合に 1.newをしてから$クラス変数->関数名(); 2.それともクラス名::関数名(); 3.そもそもclassで囲わないで、関数名();のみ コーディングルールがないのでどれが一般的なのかが分かりません。 教えて下さい。

    • ベストアンサー
    • PHP
  • PHPでhttp上の外部ファイルをrequireしたい

    PHPでhttp上の外部ファイルをrequireしたいのですが、変数がうまく 参照できません。例えば以下のようにすると、common1.phpの中で $a=$a+1 と書いても、11と出力されずに10と出力されます。 (require自体はうまく行っているようで、common1.phpの中で print等を書くとそれ自体は問題なく実行されます。) require("./common1.php")のようにファイル指定だと問題なく11と 出力されます。原因・解決方法等ご存じのかたがいらっしゃったら 教えてください。FedoraCore4 PHP5.0.4です。 <?php $a = 10; require("http://hogehoge/common1.php"); print "$a"; ?>

    • 締切済み
    • PHP
  • ライブラリ化するとメモリを圧迫する?

    perl で、数々の処理を一つのファイルにまとめて しまい、その都度、関数を呼び出して使う、という ライブラリ化 ( モジュール化? ) は常套手段だと 思うのですが、ひとつ気になってきました。 require "jcode.pl" ・・・みたいに、プログラムの頭の方でインクルード のようなことをします。するとそのファイルのサイズ 丸々がメモリに入るのでしょうか? つまり、ライブラリファイルが大きければ大きいほど メモリを圧迫し、処理速度に影響したり、何メガも あったりすると読みきれないとか、何かと影響は 出てこないものなのでしょうか。 いま、perl で組んでいて、一つのファイルにぜんぶ まとめてしまうのが心配になってきました。

    • ベストアンサー
    • Perl
  • 単なる関数の集まりかオブジェクト化どっちが優れていますか?

    Perl5.6でCGIを作成しております。 単なるサブルーチンの集まりの関数と、オブジェクト(packageしたもの )で同じ機能の関数を呼び出した場合に、動作スピードや開発の柔軟性など いろいろ考えた場合に、 require か useのどちらにどのような長所があり優れて、どのような短所があるか 現在理解できていません。 皆様の様々なご意見をお聞かせ下さい。

    • ベストアンサー
    • Perl
  • PHPのセッション変数について

    ページの構成が代わり、A-B-Cと順番だったのをA-Cと変更しました。 AからCリンクにとぶように設定したのですが、リンクを変更していてもBのページに行ってしまいます。 このプログラムを作った人に聞きましたところ、 if{session("user_sbt") というセッション変数で、新しく作られた画面のところで何もセットしていなければ初めの画面(B)に戻るというプログラムが走っているそうです。作った人に直してもらえたら良いのですが、事情で日本にはいないので、わかる方教えてください。よろしくお願いします。 PHPファイルの上部には session_start(); require_once("../_common/head.php"); require_once("../_common/mysql.php"); というセッション変数が記入されています。

    • 締切済み
    • PHP
  • require_onceについて

    いつもお世話になっております。 超初級な質問で申し訳ないのですが困ってます。 下記のような4つのclassがあります。 A_Class------------ <?php require_once('Base_Class'); class A_Class extends Base_Class{} Base_Class------------------ <?php require_once('B_Class'); abstract class Base_Class { public function hoge (){ $b = new B_Class(); $b->hoge(); } } B_Class--------------------- <?php require_once('C_Class'); class B_Class{ public function hoge (){ $c = new C_Class(); } } C_Class--------------------- <?php require_once('Base_Class'); class C_Class extends Base_Class{} ほかのファイルからrequire_once('A_Class');をすると PHP Fatal error: Class 'Base_Class' not found in C_Class.class.php on line 2 となります。 Base_Classのrequire_once('B_Class');をクラス定義の下に書けば通るのですが、 できればrequire_onceは上部にそろえておきたいです。 require_onceを下に書かずに修正する方法がありましたらご教授お願いします。

    • 締切済み
    • PHP
  • オブジェクトの生成やメモリの削除について

    class X{ ........ ........ ........ } に対し、 X *a=new X;//--------------1 ... ... ... a=new X;//----------------2 としてdeleteせずにnewをした場合、1の段階で作ったオブジェクトは削除されずメモリに残りっぱなしになるのでしょうか? これは、プログラムを終了しても残り続けるものなのでしょうか? また、mallocやcallocの場合はどうなるのでしょうか?