类与对象
面向对象是为了更大规模合作,代码量大的情况
基础语法
<?php
class name
{
//public 代表可见性(公有)
//定义类属性(类似变量)
public $s1 = 0;
public $s2 = 1;
//定义类方法(类似函数)
public function s1()
{
echo 's1';
}
public function s2()
{
echo 's2';
}
}
$name = new name();//根据name类实例化对象
var_dump($name);//object(name)[1]
//调用对象属性
echo $name->s1;//0
echo $name->s2;//1
//调用对象方法
$name->s1();//s1
$name->s2();//s2
//——————————————普通变量和函数调用
$x='hello';
echo $x;//hello
function x(){
echo 'world';
}
x();//world
?>
伪变量 $this
为了优化以下代码
<?php
class name
{
//定义类方法(类似函数)
public function s1()
{
$s1=new name();
$s1->s2();
}
public function s2()
{
echo 's2';
}
}
$name = new name();
$name->s1();//s2
?>
优化方法( $this
必须放在方法里面 )
$this
在构造函数中指改构造函数所创建的新对象。- 在类中使用当前对象的属性和方法,必须使用
$this
->取值。 - 方法内的局部变量,不属于对象,不使用
$this
关键字取值。 - 局部变量和属性可以同名,但用法不一样。在使用中,要尽量避免这样使用,以免混淆
<?php
class name
{
//定义类方法(类似函数)
public function s1()
{
$this->s2();
}
public function s2()
{
echo 's2';
}
}
$name = new name();
$name->s1();//s2
?>
<?php
class Person
{
public $name = 'noName';
public function __construct($name = 'noName')
{
$this->name = $name;
print_r($this);
}
public function test()
{
$name = 'tom';//方法内的局部变量
echo '方法test内的局部变量$name=' . $name, '<br>';
echo '对象属性$name=' . $this->name, '<br>';
}
}
$cc = new Person('bob');//Person Object ( [name] => bob )
$cc->test();//方法test内的局部变量$name=tom //对象属性$name=bob
私有属性设置和修改
<?php
class fun
{
public $x = 2;
//私有属性 private 是私有属性,只有在类内部才能访问
private $y = 3;
function num()
{
echo $this->x;
}
//设置y
function setY($y)
{
$this->y = $y;
}
//访问y
function getY()
{
return $this->y;
}
}
$enjoy = new fun();
//公有变量获取和设置
$enjoy->x = 5;
$enjoy->num();//5
//私有变量获取和设置
$enjoy->setY(10);
echo $enjoy->getY();//10