博客列表 >对命名空间的理解、类的继承与实现——2019年7月31号22时03分

对命名空间的理解、类的继承与实现——2019年7月31号22时03分

嘿哈的博客
嘿哈的博客原创
2019年08月02日 21:31:371264浏览

对命名空间的理解:

声明命名空间为 namespace ;

::class //获取当前类的完整类名称(命名空间名称+类名称);

访问 new \命名空间名称\类名称 ;

在one空间执行two空间的test类里的方法: (new \two\test()) -> show ();

命名空间就像城市与街道划分,命名空间是城市,类是街道 


类的定义:生成对象的模板;

类的实例化: $obj = new Demo1();

类的成员: 类属性(变量概念)和类方法(函数概念)

get_class_vars() 获取类中所有属性组成的数组;

类中的$this代表当前类的实例,是伪对象;

查看类中的方法 get_class_methods();


构造方法 __construct() 魔术方法 系统自动触发;

析构方法 __destruct() 也是魔术方法 对象被删除/清零时触发;

unset() 删除对象;


类的继承

用extends拓展 round(数据,保留小数点几位)四舍五入

实例

<?php

    namespace one;

    class A{
        public $who;
        public $name;
        //构造方法
        public  function __construct($who='我是',$name='洪吉潮')
        {
            $this->who = $who;
            $this->name = $name;
        }
        public function demo()
        {
            return '结果:' . $this->who . $this->name;
        }
    }

    $obj = new A();

    echo $obj -> demo();

    namespace two;
    class A
    {
        public $who;
        public $name;
        //构造方法
        public function __construct($who='你是',$name='李文茜')
        {
            $this->who=$who;
            $this->name=$name;
        }
        public function demo(){
            return '结果:'.$this->who . $this->name;
        }
    }
    echo '<hr>';
    $obj = new A();
    echo $obj->demo();

运行实例 »

点击 "运行实例" 按钮查看在线实例

连接数据库演示实例

<?php

    namespace one;

    class Db
    {
        public $pdo = 'null';
        //构造方法 创建pdo连接数据库
        public function __construct($dsn,$username,$password)
        {
            $this->pdo = new \PDO($dsn,$username,$password);
        }
        //析构方法
        public  function __destruct()
        {
            echo '<br>'.'连接断开';
        }
    }

    $db = new Db('mysql:host=127.0.0.1;dbname=php','root','root');

    $stmt = $db->pdo->prepare('SELECT * FROM `movies`');

    $stmt ->execute();

    foreach ($stmt->fetchAll(\PDO::FETCH_ASSOC )as $data){
        print_r($data);
    }

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
    //命名空间
    namespace one;
    //demo类
    class demo
    {
        public $name;
        public $age;

        //构造函数 实例化时会被自动调用执行
        public function __construct($name= '洪吉潮',$age)
        {
            $this->name = $name;
            $this->age = $age;
            echo '欢迎来到我的个人简介'.'<br>'.'姓名:'.$this->name.'<br>';
        }
        public function  getInfo()
        {
            return '年龄:'.$this->age.'<br>';
        }
    }
    //实例化
    $result = new demo('高老师','20');
    echo $result->getInfo();
    echo '<hr>';
    //子类demo1 继承 父类 demo
    class demo1 extends demo
    {
        public $address;
        //子类的构造函数
        public function __construct($address, $name = '洪吉潮' , $age)
        {
            $this->address = $address;
            //继承父类的构造函数
            parent::__construct($name, $age);
        }
        //方法重写
        public function getInfo()
        {
            return parent::getInfo().'哪里人:'.$this->address; // TODO: Change the autogenerated stub
    }
    }

    $result1 = new demo1('广东人','洪吉潮','22');
    echo $result1->getInfo();
    echo '<hr>';
    //子类demo2 继承父类demo1
    class demo2 extends demo1
    {
        public $teacher;
        //子类demo2构造函数
        public function __construct($teacher,$address, $name = '洪吉潮', $age)
        {
            $this->teacher = $teacher;
            //继承父类demo1的构造函数
            parent::__construct($address, $name, $age);
        }
        //方法重写
        public function getInfo()
        {
            $getinfo =  parent::getInfo();
            return $getinfo.'<br>'. '师从何人:'.$this->teacher;
        }
    }

    $result2 =  new demo2('没有老师','浙江人','李文茜','18');
    echo $result2 -> getInfo();

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议