• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

新手请教下,类属性能初始化为一个其他类的实例对象吗

php 搞代码 4年前 (2022-01-24) 19次浏览 已收录 0个评论

新手请问下,类属性能初始化为一个其他类的实例对象吗
如果行的话,那语法是什么样的?

——解决方案——————–

class A {}<br />class B {<br />  public $o;<br />  function __construct() {<br />    $this->o = new A;<br />  }<br />}<br />$p = new B;<br />print_r($p);
B Object<br />(<br />    [o] => A Object<br />        (<br />        )<br /><br />)<br /><br />

——解决方案——————–

引用:

@xuzuning版主

<?php<br />	class test{<br />		private $parameter;<br />		public function __construct($parameter){<br />			$this->parameter=$parameter;<br />			echo "test类构造方法被调用<br />";<br />		}<br />		public function getParameter(){<br />			echo $parameter;<br />		}<br />	}<br />	class test1{<br />		private static $test=null;<br />		public function __construct(){<br />			$test = new test("test"<strong style="color:transparent">¥本文来源gaodai#ma#com搞@@代~&码网^</strong><small>搞gaodaima代码</small>);<br />			echo "test1类构造方法被调用<br />";<br />		}<br />		public static function show(){<br />			echo "show()方法被调用";<br />			self::$test->getParameter();//<br />		}<br />	}<br />	$test1 = new test1();<br />	test1::show();<br />?>

以上代码这句:self::$test->getParameter();会报Fatal error: Call to a member function getParameter() on a non-object,我把test1类的属性$test改为普通属性,show()方法改为普通方法,还是报同样的错误,为什么?

你的程序写错了。
1.第9行,你要显示$parameter属性,应是 echo $this->parameter; 而不是echo $parameter;
2.第15行 $test = new test(“test”); 这个赋值并不会赋值到 private static $test,所以第20行的self::$test 是等于null
因此15行需要改为 self::$test = new test(“test”);

修改后的程序如下:

<br /><?php<br />    class test{<br />        private $parameter;<br />        public function __construct($parameter){<br />            $this->parameter=$parameter;<br />            echo "test类构造方法被调用<br />";<br />        }<br />        public function getParameter(){<br />            echo $this->parameter; // 修改这里<br />        }<br />    }<br />    class test1{<br />        private static $test=null;<br />        public function __construct(){<br />            self::$test = new test("test");  // 修改这里<br />            echo "test1类构造方法被调用<br />";<br />        }<br />        public static function show(){<br />            echo "show()方法被调用";<br />            self::$test->getParameter();//<br />        }<br />    }<br />    $test1 = new test1();<br />    test1::show();<br />?><br />

test类构造方法被调用
test1类构造方法被调用
show()方法被调用test

最后不得不说,自己有问题应该开贴,不应该在别人贴里面问。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:新手请教下,类属性能初始化为一个其他类的实例对象吗

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址