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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 14:17:191170ブラウズ

コンストラクターで複数の値を渡す必要があり、毎回渡される値の数が固定されない可能性があるため、コードは次のようになります。渡さない場合、スイートポテトコンストラクターのデフォルト値が設定されます。以下では、配列を 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);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。