php面向对象


1. 类的创建


创建一个类 man.php;

<?php

class man
{
    /**
     * @param string $name
     * @param int $age
     */
    private $name, $age;
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
        echo 'construct';
    }

    /**
     * @return mixed
     */
    public function getAge()
    {
        return $this->age;
    }

    /**
     * @param mixed $age
     */
    public function setAge($age)
    {
        $this->age = $age;
    }

    /**
     * @return mixed
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param mixed $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }



}


对这个类进行实例化;

require_once 'man.php';
$m = new man('zhang', 3);
echo $m->getName();

2. 类的命名空间;

在工程中,会出现相同类名的类,这种情况下通过不同的命名空间区分;

定义两个相同类名的类,分别放在两个目录下

<?php


namespace thystar;


class hello1
{
    public function say(){
        echo 'hello';
    }
}

<?php

namespace thy;

class hello1
{
    public function say(){
        echo 'hello thy';
    }
}

使用这两个类;

require_once 'thystar/hello1.php';
require_once 'thy/hello1.php';
$t1 = new \thystar\hello1();
$t2 = new \thy\hello1();
$t1->say();
$t2->say();


3. 成员方法和类方法

成员方法:定义在类中的方法,如setter和getter等;

类方法 : 用static定义的方法;即静态方法,执行时不需要创建实例用“类::方法”执行

eg: 在上面的man类中定义:

public static function say(){
        echo 'I am a man';
    }

调用这个方法:

man::say();

类方法的使用场合: 描述属性。


静态的常量,变量,及静态的方法都是用于描述设计信息的,如:

对man这个类做如下修改;

<?php

class man
{
    /**
     * @param string $name
     * @param int $age
     */
    private $name, $age;
    public function __construct($name, $age){
        $this->name = $name;
        $this->age = $age;
        //echo 'construct';
        man::$NUM++
        if(man::$NUM > man::MAX_NUM){//限制人数;
            throw new Exception("over");
        }
    }

    /**
     * @return mixed
     */
    public function getAge()
    {
        return $this->age;
    }

    /**
     * @param mixed $age
     */
    public function setAge($age)
    {
        $this->age = $age;
    }

    /**
     * @return mixed
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param mixed $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    public static function say(){//静态方法
        echo 'I am a man';
    }
    //创建静态常量
    private static $NUM = 0;
    const MAX_NUM = 200;


}

调用:

for($i=0; $i<200; $i++){
    new man('thystar', 10);
}

4. 类的重构和方法重写;

首先,定义一个People类(对之前的man类修改):

<?php

/**
 * Created by PhpStorm
 * Date: 2015/8/5
 * Time: 22:30
 */
class People
{
    /**
     * @param string $name
     * @param int $age
     * @param string $sex
     */
    private $name, $age, $sex;
    public function __construct($name, $age, $sex){
        $this->name = $name;
        $this->age = $age;
        $this->sex = $sex;
        //echo 'construct';
        People::$NUM++;
        if(People::$NUM > People::MAX_NUM){
            throw new Exception("over");
        }
    }

    /**
     * @return mixed
     */
    public function getSex()
    {
        return $this->sex;
    }

    /**
     * @param mixed $sex
     */
    public function setSex($sex)
    {
        $this->sex = $sex;
    }

    /**
     * @return mixed
     */
    public function getAge()
    {
        return $this->age;
    }

    /**
     * @param mixed $age
     */
    public function setAge($age)
    {
        $this->age = $age;
    }

    /**
     * @return mixed
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param mixed $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    public function sayhi(){
        echo $this->name;
    }

    public static function say(){
        echo 'Hi';
    }
    //创建静态常量
    private static $NUM = 0;
    const MAX_NUM = 200;


}

定义继承类Man;

<?php

require_once 'People.php';
class Man extends People
{
    public function __construct($name,$age ){
        parent::__construct($name, $age, 'm');
    }

    //重写方法
    public function sayhi(){
        echo 'I am a man';
    }
}


方法调用:

require_once 'Man.php';
$man = new Man('zzzzz', 11);
$man->sayhi();









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值