• 締切済み

global 変数を使わないサンプルスクリプト

taskuniの回答

  • taskuni
  • ベストアンサー率71% (49/69)
回答No.1

まずは変数を減らすことを考えてみてはどうでしょうか。 変数をカテゴリ分けして、それぞれを配列などにすれば、関数に渡す時にも配列1つ渡すだけで済むかもしれません。 例えば。。。 $a1,$a2,$a3 という変数を $a[0],$a[1],$a[3] としておくとか。 $height,$width を $size['height'],$size['width'] とするとか。 これで、 func($a,$size) とすると、関数funcに5つ変数が渡ることになります。 また、配列の要素が増えてしまっても引数のリストは変えずに済むと思います。

参考URL:
http://php.s3.to/man/functions.arguments.html
noname#15164
質問者

お礼

配列化する方法で少し減りました。 が!!、なにか根本的に違っているような。 アルゴリズムというか、流れというか、雰囲気というか。 プロならもっと短くて、シンプルに書けるんじゃないかなー、と思ってはいるんですが。 グローバル変数が多く、変数が行ったり来たりしているので。

noname#15164
質問者

補足

配列で渡す方法は知っています。 全体的な雰囲気というか、設計思想を考えたいんですよねー。 雰囲気を知るには、実際のスクリプトをみるのが早いかと思いまして。 探してはみたのですが、1つか見つからず、途方にくれています。 しかも、私にはちょっと難しすぎだし。 できれば、 global変数を使っていない。 スクリプトが一つのファイルにまとまっている。 簡単でシンプル。 な物を探しています。

関連するQ&A

  • コーディングの綺麗な、サンプル。(長文

    コード、スクリプトの書き方で悩んでいます。 具体的には、 ユーザー関数内への、変数の渡し方です。 ・変数でユーザー関数に引き渡すか、 ・定数にして、読み出すか、 ・いっその事、グローバル変数にするか。 私は、よくミスをする人間と自覚しているので、 グローバル変数を使わない書き方にしているんですが。 (未定義のグローバル変数は、やはり危険だと思う。 けど、作成環境では未定義の変数は、意図的に Notice: Undefined variableの注意を出して、つぶす ようにしてるから、未定義はあり得ないし。^^;) 定数は便利なんですが、スクリプト中に$のない変数 があるのが違和感があるし、定数を使ってもそのまま 定数名が現れてしまう場合もあるので、$teisu = TEISU; としないといけないのが、かっこわるいかなー、と。 (明示的に定数を表示する方法もあるのかな?) 引き渡す方法も、ユーザー関数内から、ユーザー関数を 呼び出すと、引数のはしごになってしまうし、()内に 4、5個もあると、かっこわるいかなー、と。^^;;; まとめられる物は、まとめているんですが、。 (組み立て方も、悪いんだと思いますが。) この辺の臨機応変な使い方が、よく分からなくって。^^; 意見は分かれると思いますが、綺麗なコーディングって、 どんなものですか? 実際にPHPの掲示板等で、これは綺麗だよ。 または、綺麗なコーディングをするための、初心者に 毛が生えた程度の、わかりやすいHPもありましたら 教えてください。 私なりのかっこよさは、 グローバル変数は使わない。 ユーザー関数の引き渡しは、少ない。 未定義の変数は、使わない。 なんですが、探してもグローバルを多様しているものや 未定義の変数の注意がたくさん出るものばかりで。 それとも、私なりのかっこよさは、ずれているんでしょうか? 長くなりましたが、お願いします。

    • ベストアンサー
    • PHP
  • 変数など厳密なプログラムが書きたいのですが、どうすればよいでしょうか?

    PHPで関数の引数に渡すとき、以下のように$aaを$aとしてしまった場合に 関数内の$idは値がありませんが、関数内でこれを検出することができるのでしょうか? Perlなら use strict;とし、my等で定義されていない変数はすべて警告表示されますが、PHPはスルーです。 変数など厳密なプログラムが書きたいのですが、どうすればよいでしょうか? $aa = 1; test($a) function test($id){ ... }

    • ベストアンサー
    • PHP
  • unset使用時の利点

    現在、PHPを勉強中なのですが unsetという標準関数がphpにはあります。 phpのマニュアルをみると 「unset ― 指定した変数の割当を解除する」と載っています。 つまりこれは、メモリ上からunsetの引数で指定した変数を開放してくれるという関数だと理解していいと思うのですが、つまりこの関数は、 一度使った後、ほとんど使われなくなる可能性ががある変数なんかがあった場合は、多用してもいいということなのでしょうか? 他にも利用したほうが良いケースや利点がある場合があるのか気になっています。

    • ベストアンサー
    • PHP
  • mod_perlでグローバル変数的なコーディング

    mod_perlに限ったことではないですが、グローバル変数はあまり使うべきではないとされていますよね。 しかし、スクリプト全体にわたって参照したい「設定値」のようなもの(よくある例としては、スクリプトの冒頭のほうで様々な設定をセットしておくような変数)の場合、いわば環境変数のように、複数のサブルーチンからでも必要時に参照できたほうが便利です。 このような使われ方で、かつ「おやくそく」に従ってグローバル変数を使わずに実現する方法は、ないものでしょうか。 シンボルテーブルを指定して無理やりメインルーチンのレキシカル変数を参照する、なんていう方法も考えてみましたが、どうも「美しくない」し、そもそも名前空間を侵害しているわけで、本末転倒です・・・ 皆さんはどのようにしているのでしょう。 御教授のほどお願いいたします。

    • ベストアンサー
    • Perl
  • スクリプトの中から使用されている変数と関数をリストする

    phpで書かれたスクリプトファイルの中から使用されている関数と変数をリストアップさせるようなことをしたいのですが、preg_matchを使うのが妥当でしょうか?また、正規表記はどんな感じがベストでしょうか?自分で試してみてもまったくへたくそでして... トホホ ぜひ皆さんの技量を拝見させてください ^^。 <?php $data = file_get_contents('~.php'); $functions = '/\s*\(*/i'; preg_match($functions, $data, $matches); print_r($matches); echo "<br>"; $variables = '/^\$[.+]/i'; preg_match($variables, $data, $matches2); print_r($matches2); echo "<br><br>"; echo $data; ?>

    • ベストアンサー
    • PHP
  • スクリプトを実行すると警告が表示されるのですが、通常警告は止まりません

    スクリプトを実行すると警告が表示されるのですが、通常警告は止まりません。 これを独自にトラップして、関数を走らせてその中で止めることはできるのでしょうか? 警告段階の変数を見ようと考えています。 PHPはバージョン5.2以降を使っています。 リフレクションという考え方だと思うのですが、PHPではどのような関数群がありますか。 もっとスマートな方法や考え方があるのでしたらご指南ください。

    • ベストアンサー
    • PHP
  • JavaScriptの変数をPHP側に渡せない理由

    WordPressでサイトを作っている時、画面幅を取得してhtmlを出しわけたい部分がありました。 そこで、JQueryで画面幅を取得してその変数をPHP分で条件分岐したいと思ったのですが、 うまくいかず、クッキーや「wp_is_mobile()」関数で今のところ実現しています。 JavaScriptの変数をPHP側で直接使えないことはわかったのですが、その理由が詳しく知りたいです。 phpファイルに ------------------------------------------------ <script>var w = 600; </script> <?php if (w <= 600): ?> 600以上だった時の処理 <?php endif; ?> ------------------------------------------------- みたいな感じで使えたらいいのにとよく思うのですが、 PHPはサーバーサイドスクリプト言語だから、PHPであらかじめ処理されたものがクライアントに送られてきて、その時にJSが読みこまれるから順番的に使えない・・・・ということでいいんでしょうか。 調べようと思っても微妙にずばっとした回答のものがなく、質問しました。 解説サイトのURLとかでもよいので、よろしくお願いいたします。 プログラミングは初心者です。

    • ベストアンサー
    • PHP
  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • onclickイベントで複数関数コール

    下記のようなPHPスクリプトで、onclickイベントで、2つの関数をコールしてるのですが、 何か間違ってますでしょうか。onclickイベントで複数関数コールするときは、カンマで 区切ればよいと書いたあった投稿を見たことがあるのですが。それとも、readcsv()関数の JavaScript内での、PHPの書き方にミスがあるのでしょうか。ご指導よろしくお願いします。 </HEAD> <BODY><script type="text/javascript"> <SCRIPT> function readcsv(){ <?php $list=read_csv(); return $list; ?>;} function setvalue(){ // 変数宣言 var batch_num = list["batch_num"]; ~ // --> </SCRIPT> <INPUT type="button" value="csv参照" onClick="setvalue(), readcsv()"></TD></TR>de

  • シェルスクリプト中のexpectで変数使う方法

    SolarisでshellにBashを使う環境で、リモートのルータに入り コンフィグを操作するscriptを書きたいと思っています。 1.引数に与えられたファイルから値を読み、変数$POLにセットする。 2.expectでルータにSSHし、変数$POLに入っている値を設定する。 3.上記をファイルの行数分繰り返す。 上記を実現しようと以下の様に書いたのですが expect内で変数が扱えません。 (ルータに$POLという文字列のまま送られてしまう) -- #!/usr/bin/bash HOST="192.168.0.100" for list in `cat $1` do POL=$(echo $list | cut -d , -f 1) /usr/local/bin/expect -c ' set timeout 5 spawn ssh -l cm01 $HOST expect "password:" send "hogehoge" expect "router $ " send "config firewall policy\r" expect "router (policy) $ " send "edit $POL\r" send "set firewall on\r" send "end\r" send "exit\r" ' done -- 色々と調べてみたのですが理由がわからず、お教えいただければ幸いです。