<?php 
/*
1.1面向对象程序设计(OOP)
1.2OOP是编程思想,不是技术
1.3学习目标
基本语法
编程思想
1.4类与对象
类是生成对象的模板
对象时类的一个实例
注:面向对象是现代编程的基础
*/
//类的声明与内部属性和方法的定义
// class/public/private/protected/$this/new

class Demo //类名必须符合php标识符规则 推荐使用帕斯卡命名法
//帕斯卡:标识符的第一个单词的首字母必须大写:ClassName
{
//属性和方法
//属性的声明必须以访问控制符开头
public $name = 'php'; //公共属性,外部可以访问
//属性访问控制符:public private protected

private $age = 20; //私有属性,只允许类中的访问调用

protected $sex = 'male'; //受保护的,仅允许本类或子类访问

//属性类型支持:标量(整数/浮点数/字符串/布尔值),复合类型:数组和对象

//方法也必须以访问控制符开头: public,private, provatected

public function getName(){

//$this是伪变量,总是指向当前对象
return $this->name;
}

public function getAge(){
return $this->age;
}
}

//创建对象的过程,就是类的实例化
$obj = new Demo(); //$obj 就是类Demo的实例
//类必须实例化才可以访问里面的属性和方法
echo $obj->name;//用对象访问运算符来直接访问属性
echo "<br>";
echo $obj->getName();//
// echo $obj->age;//private定义的属性外部不可以直接访问
echo "<br>";
echo $obj->getAge();
echo "<br>";
//对象是一个引用变量,我们对对象的赋值并没有创建新的对象,而是创建一个当前对象的引用
$obj2 = $obj;
if($obj2 == $obj){
echo "相等";
}else{
echo "不等";
}
echo "<br>";
echo get_class($obj2);
echo "<br>";
echo $obj2->name;
//如果在类的外部访问属性或方法,可以直接用对象
//如果在类的内部访问属性或方法,必须使用伪变量$this
?>