PHP类与对象(面向对象)

类与对象

面向对象是为了更大规模合作,代码量大的情况

基础语法

<?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

添加新评论

文章状态:已收录~