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

PHP超初心者です。
PHPはPerlのように変数がデフォルトでglobalではないようなので、いちいちglobal宣言やclassを使うのがめんどうです。
どなたかいい方法があれば教えてください。
お願いします。
現在は以下のように記述していますが、変数をsplitしてたくさんのグローバルな変数を作るときにとても大変そうで悩んでいます。
class hoge{
public $hogehoge = 1;
}
function aho(){
$obj = new hoge();
print $obj->hogehoge;
}
aho();


●質問者: チャゲ
●カテゴリ:ウェブ制作
✍キーワード:Class hoge Perl PHP print
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●15ポイント

変数がデフォルトでglobalではない

これは言語仕様なので、どうしようもありません。


一般的に、PHP、Pealなどの関数型言語は、global変数を使わず、値渡しするのがセオリーです。


どうしても大変だということでしたら、VB.NET を使うこをお勧めします。

◎質問者からの返答

やはりそうですか。

VB.NETですか。

初めて知りました。面白そうですね。

あ、あと言うのを忘れていましたが、defineもあまり使いたくありません(わがままですいません)


2 ● krese
●20ポイント

$GLOBALを使うことによって、global宣言なしにグローバル変数にアクセスできます。

http://jp.php.net/manual/ja/reserved.variables.globals.php

こちらをお使いいただくと幾分楽かと思います。

◎質問者からの返答

あ、そういえばそんなものがありましたね。

でも、1個1個にGLOBALをつけるのはちょっと大変そうかなあ・・・


3 ● Mook
●45ポイント ベストアンサー

コメントが無効なので、回答で失礼します。


PHP を習い始めたばかりのであれば、Global変数を使用しない書き方、

class を使うやり方を覚えたほうが良いかと思います。


多くのログラム言語で変数の有効範囲(Scope)はPHPのように

クラスや関数内で局所変数となるのが基本ですし、そのほうが都合の

良いことが多いのです。


大域変数(Global)を処理のあちこちで変更するのは一見便利そうですが、

弊害も多く、このような使い方はデバッグをしずらくし、拡張性、再利用性を

阻害する大きな原因となります。


例のケースでも、$hogehoge を puiblic にする必要性は見当たりません。

面倒でもこれに対するアクセスするメンバ関数を定義し、使用したほうが

のちのち便利だと思います。


>変数をsplitしてたくさんのグローバルな変数を作るときにとても大変そうで悩んでいます。

何のためにこのような処理をしたいかを説明し、これに対する効率的な方法の解決を図る方が

良いのではないでしょうか。


通常は多くのデータを処理するには配列を使用しますし、連想配列を利用すれば変数名を

キーとして、値を管理することは簡単にできます。

http://www.scollabo.com/banban/php/php_05.html

http://ww7.tiki.ne.jp/~inabah/php/002_006.htm

◎質問者からの返答

いちいちpublicしなくてもよかったのですか。

クラスは使ったことがないので勉強もかねてクラスを使ってやってみることにします。

分かりにくい質問なのにありがとうございました。

とても助かりました。

関連質問


●質問をもっと探す●



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