ホームページ > バックエンド開発 > PHPチュートリアル > 変数を介してクラス内のコンストラクターに値を渡す方法

変数を介してクラス内のコンストラクターに値を渡す方法

WBOY
リリース: 2016-06-23 14:17:19
オリジナル
1139 人が閲覧しました

コンストラクターで複数の値を渡す必要があり、毎回渡される値の数が固定されない可能性があるため、コードは次のようになります。渡さない場合、スイートポテトコンストラクターのデフォルト値が設定されます。以下では、配列を implode で文字列に分割し、「,」で接続しています。結果は、なぜ $host 変数に転送されるのでしょうか? :192.168.1.1,1212
port:80

また、つまり、ポストは $host に渡されますが、ポートはデフォルトの

class test{	public function __construct($host="127.0.0.1",$port="80")	{		echo 'host:'.$host."<br>";		echo 'port:'.$port;	}}$data['host']='192.168.1.1';$data['port']='1212';$str=implode(',',$data);$obj=new test($str);
ログイン後にコピー


を使用したままです 結果:
host:192.168.1.1,1212port:80
ログイン後にコピー


ディスカッションに返信 (解決策) )

低レベルのエラー

$str はただの変数ですが、どうすればプログラムが自動的に 2 つとして理解できます

この方法でパラメータを渡すということは、ホスト変数 192.168.1.1, 1212 を渡すことを意味します。ポート変数が渡されない場合、
class test{    public function __construct($host="127.0.0.1",$port="80")    {        echo 'host:'.$host."<br>";        echo 'port:'.$port;    } }$data['host']='192.168.1.1';$data['port']='1212';$ref = new ReflectionClass('test');$obj = $ref->newInstanceArgs($data);
ログイン後にコピー
host:192.168.1.1

port:1212

<?phpclass test{	public static function new_object($data = array()) {		switch(count($data)) {			case 2:				return new self($data['host'], $data['port']);			case 1:				return new self($data['host']);			default:				return new self();		}	}    public function __construct($host="127.0.0.1",$port="80")    {        echo 'host:'.$host."<br>";        echo 'port:'.$port;    } } $data['host']='192.168.1.1';$data['port']='1212';//$str=implode(',',$data);//$obj=new test($str);$obj = test::new_object($data);
ログイン後にコピー

host:192.168.1.1

port:1212

$ref = new ReflectionClass('test'); と記述するには、クラスのデフォルト 80 を使用する必要があります。
$ obj = $ref->newInstanceArgs($data);

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート