PHPはPerlのように変数がデフォルトでglobalではないようなので、いちいちglobal宣言やclassを使うのがめんどうです。
どなたかいい方法があれば教えてください。
お願いします。
現在は以下のように記述していますが、変数をsplitしてたくさんのグローバルな変数を作るときにとても大変そうで悩んでいます。
class hoge{
public $hogehoge = 1;
}
function aho(){
$obj = new hoge();
print $obj->hogehoge;
}
aho();
コメントが無効なので、回答で失礼します。
PHP を習い始めたばかりのであれば、Global変数を使用しない書き方、
class を使うやり方を覚えたほうが良いかと思います。
多くのログラム言語で変数の有効範囲(Scope)はPHPのように
クラスや関数内で局所変数となるのが基本ですし、そのほうが都合の
良いことが多いのです。
大域変数(Global)を処理のあちこちで変更するのは一見便利そうですが、
弊害も多く、このような使い方はデバッグをしずらくし、拡張性、再利用性を
阻害する大きな原因となります。
例のケースでも、$hogehoge を puiblic にする必要性は見当たりません。
面倒でもこれに対するアクセスするメンバ関数を定義し、使用したほうが
のちのち便利だと思います。
>変数をsplitしてたくさんのグローバルな変数を作るときにとても大変そうで悩んでいます。
何のためにこのような処理をしたいかを説明し、これに対する効率的な方法の解決を図る方が
良いのではないでしょうか。
通常は多くのデータを処理するには配列を使用しますし、連想配列を利用すれば変数名を
キーとして、値を管理することは簡単にできます。
変数がデフォルトでglobalではない
これは言語仕様なので、どうしようもありません。
一般的に、PHP、Pealなどの関数型言語は、global変数を使わず、値渡しするのがセオリーです。
どうしても大変だということでしたら、VB.NET を使うこをお勧めします。
やはりそうですか。
VB.NETですか。
初めて知りました。面白そうですね。
あ、あと言うのを忘れていましたが、defineもあまり使いたくありません(わがままですいません)
$GLOBALを使うことによって、global宣言なしにグローバル変数にアクセスできます。
http://jp.php.net/manual/ja/reserved.variables.globals.php
こちらをお使いいただくと幾分楽かと思います。
あ、そういえばそんなものがありましたね。
でも、1個1個にGLOBALをつけるのはちょっと大変そうかなあ・・・
コメントが無効なので、回答で失礼します。
PHP を習い始めたばかりのであれば、Global変数を使用しない書き方、
class を使うやり方を覚えたほうが良いかと思います。
多くのログラム言語で変数の有効範囲(Scope)はPHPのように
クラスや関数内で局所変数となるのが基本ですし、そのほうが都合の
良いことが多いのです。
大域変数(Global)を処理のあちこちで変更するのは一見便利そうですが、
弊害も多く、このような使い方はデバッグをしずらくし、拡張性、再利用性を
阻害する大きな原因となります。
例のケースでも、$hogehoge を puiblic にする必要性は見当たりません。
面倒でもこれに対するアクセスするメンバ関数を定義し、使用したほうが
のちのち便利だと思います。
>変数をsplitしてたくさんのグローバルな変数を作るときにとても大変そうで悩んでいます。
何のためにこのような処理をしたいかを説明し、これに対する効率的な方法の解決を図る方が
良いのではないでしょうか。
通常は多くのデータを処理するには配列を使用しますし、連想配列を利用すれば変数名を
キーとして、値を管理することは簡単にできます。
いちいちpublicしなくてもよかったのですか。
クラスは使ったことがないので勉強もかねてクラスを使ってやってみることにします。
分かりにくい質問なのにありがとうございました。
とても助かりました。
いちいちpublicしなくてもよかったのですか。
クラスは使ったことがないので勉強もかねてクラスを使ってやってみることにします。
分かりにくい質問なのにありがとうございました。
とても助かりました。