php面向对象(oop)
php面向对象(oop)
    将同一事物统一管理;
<?php
    class cat{
    
        public $name;
        public $age;
    
    }
    //创建对象
    $cat1=new cat;
    //给对象赋值
    $cat1->name="小明";
    $cat1->age=12;
    echo $cat1->name;
?>
 成员属性必须是public 才能访问;
对象在内存中的存在形式:
  当php在内存中运行的时候,会在内存中开辟几个区域
  (堆区,栈区,代码区,全局区,常量区);

<?php
    class person{
    
        public $name;
        public $age;
    
    }
    $a=new person();
    $a->name="小明";
    $a->age=20;
    //把a变量(对象),赋给$b;
    $b=$a;
    
    echo $a->name."<br>";
    echo $b->name."<br>";
?>
加深内存图的认识:
 $a=78;
 //$b=$a;
 $b=&$a;
 $b=$b+8;
 echo $a."\n".$a;

 
对象传入函数的时候传入值,还是地址?
(记忆,函数调用的时候会重新开辟一个新栈 当函数调用完 返回后,新栈结束)
class person{
    
        public $name;
        public $age;
    
    }
    $p1=new person();
    $p1->name="韩顺平";
    $p1->age=22;
    //函数接受对象时候,究竟是传入值,还是地址;
    function test1($p){
    
        $p->name="小明";
    }
    test1($p1);
    echo $p1->name;
分析图:

 
如果给函数传递的是基本数据类型(整数,小数,布尔,字符),传的是什么?
$a=90;
传递的是具体的值90;在函数内不能修改$a的值;
在变量前面加&地址符,就可以传入$a的地址;在函数内修改$a的值;
在函数内传入数组  也是默认传入值;如果希望传入地址;则加&$arr;
成员方法:
访问修饰符号 function函数名(参数列表){
  //函数体
  //return 返回值
}
class person{
    
        public $name;
        public $age;
        public function count1(){
        
            $res=0;
            for($i=1;$i<=100;$i++){
            
                $res+=$i;
            
            }
            return $res;
        }
        public function count2($n){
        
            $res=0;
            for($i=1;$i<=$n;$i++){
            
                $res+=$i;
            
            }
            return $res;
        }
        public function speak(){
        
            echo "我是一个好人";
        
        }
    }
    $p1=new person();
    $p1->speak();
    echo "<br/>".$p1->count1();
    //接受一个数然后计算
    echo "<br/>".$p1->count2(100);
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号