[PHP-users 5807] Re: PHPの変数の扱いについて

Naofumi Kondoh php-users@php.gr.jp
Fri, 01 Mar 2002 23:53:53 +0900


ソフト工房の近藤です。

mots wrote:

....略.... 

> Function Aを呼ぶPHPスクリプト"C"があるとします。
> このスクリプトでは、Function Aを呼び、returnでデータをもらっております。
> そのデータをこのスクリプトの中でecho で出力しました。
> さらに、echo $conとしました。
> 
> この場合、PHPスクリプト"C"に置いては$conの出力はできるのでしょうか?

こういう場合は、実行可能な短い例題を書いて頂いた方が
わかりやすいです。

なにをなさりたいのかよくわからないので、当て推量で。
環境: PHP 4.1.2 PostgreSQL 7.2  Linux TLJ WS 6.0

[例題1]
普段こういう書き方をしないので、スカラーでなくリソース
にも使えるのかちょっと自信なしです。一応動きましたが。
<?php
function A()
{
    static  $con;
    $con = pg_connect('dbname=idb') or die('ERROR');
    printf("%s<br>\n", $con);
    return($con);
}
$con = A();
printf("%s<br>\n", $con);      
$execid = pg_exec($con,'SELECT version();') or die('ERR');
echo pg_result($execid,0,0), '<hr>';
pg_close($con);
?>

[例題2]
クラスにする場合が多いと思います。私は専らこの方式。
<?php
class A_db_class
{
    var $con;
    function A_db_class()
    {
        $this->con = pg_connect('dbname=idb') or die('ERROR');
        printf("%s<br>\n", $this->con);
    }   
}
$a = new A_db_class();
printf("%s<br>\n", $a->con);
$execid = pg_exec($a->con,'SELECT version();') or die('ERR');
echo pg_result($execid,0,0), '<hr>';
pg_close($a->con);
?>

 
> ※もしできるならば参照渡しが…。

参照渡し(call by reference)もできます。引数に & を
つけるだけです。マニュアルを見てください。

参照渡しは他の人がプログラムを直すときに間違いやすい
ので使う場所を限定してコメントをたっぷり入れます。

単に複数の値を返したいなら、配列で返すか、クラスにし
てプロパティーに入れておくかした方が間違いにくいです。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
  《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
           http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/