php对象为什么没有输出name呢

<?php

 class MyPc{
     public $name;    //全局的一个属性,任何位置都可以调用。
     protected $price; //受保护的,只有在本类或者父类中访问
     
     function void(){//私有属性
         
         return $this->name;
         
     }
     
     
 }
 $pc=new MyPc('我的电脑');
 echo $pc->name;

?>

阅读 2.1k
2 个回答

因为你没写构造函数,默认的是无参构造函数,name还没被赋值,你要写个有参的

1、你没有先构造函数,只有构造函数在类执行时才会自动调用,你的成员函数不会自动调用
2、2种实现方式
第一种方案:

 class MyPc{
     public $name;    //全局的一个属性,任何位置都可以调用。
     protected $price; //受保护的,只有在本类或者父类中访问
     
     public function __construct($name = ''){
         $this->name = $name;
     }
     
     function void(){//私有属性
         
         return $this->name;
         
     }
     
     
 }
 $pc=new MyPc('我的电脑');
 echo $pc->name;

第二种方案:

 class MyPc{
     public $name;    //全局的一个属性,任何位置都可以调用。
     protected $price; //受保护的,只有在本类或者父类中访问
     
     function void(){//私有属性
         
         return $this->name;
         
     }
     
     
 }
 $pc=new MyPc();
 $pc->void('我的电脑');

 echo $pc->name;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题