• php入门(三)


    PHP 面向对象:

     在php5中 var就是public的别名。

    变量 $this 代表自身的对象。
    PHP_EOL;为换行符

    构造函数+析构函数
    <?php
    class Site {
      /* 成员变量 */
      var $url;
      var $title;
      
      /* 成员函数 */
      function setUrl($par){
         $this->url = $par;
      }
      
      function getUrl(){
         echo $this->url . PHP_EOL;
      }
      
      function setTitle($par){
         $this->title = $par;
      }
      
      function getTitle(){
         echo $this->title . PHP_EOL;
      }
    /*构造函数
    返回类型function 函数名为__construct*/
    function __construct( $par1, $par2 ) {
       $this->url = $par1;
       $this->title = $par2;
    }
    /*析构函数*/
     function __destruct() {
           print "销毁 " . $this->name . "
    ";
       }
     
    
    

     

    } 
    $runoob
    = new Site;
    $taobao
    = new Site;
    $google
    = new Site; // 调用成员函数,设置标题和URL
    $runoob->setTitle( "百度" );
    $taobao
    ->setTitle( "淘宝" );
    $google
    ->setTitle( "Google 搜索" );
    $runoob
    ->setUrl( 'www.baidu.com' );
    $taobao
    ->setUrl( 'www.taobao.com' );
    $google
    ->setUrl( 'www.google.com' ); // 调用成员函数,获取标题和URL
    $runoob->getTitle();
    $taobao
    ->getTitle();
    $google
    ->getTitle();
    $runoob
    ->getUrl();
    $taobao
    ->getUrl();
    $google
    ->getUrl();

    $runoob = new Site('www.baidu.com', '百度'); 
    $taobao = new Site('www.taobao.com', '淘宝'); 
    $google = new Site('www.google.com', 'Google 搜索'); 

    // 调用成员函数,获取标题和URL 
    $runoob->getTitle(); 
    $taobao->getTitle(); 
    $google->getTitle(); 

    $runoob->getUrl(); 
    $taobao->getUrl(); 
    $google->getUrl();


    ?>


     

    继承

    PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承,格式如下:

    class Child extends Parent {
       // 代码部分
    }

    方法重写

    如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

    实例中重写了 getUrl 与 getTitle 方法:

    访问控制

    PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

    • public(公有):公有的类成员可以在任何地方被访问。
    • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
    • private(私有):私有的类成员则只能被其定义所在的类访问。

    属性的访问控制

    类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有

    方法的访问控制

    类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。

    <?php
    /**
     * Define MyClass
     */
    class MyClass
    {
        public $public = 'Public';
        protected $protected = 'Protected';
        private $private = 'Private';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;
        }
    }
    
    $obj = new MyClass();
    echo $obj->public; // 这行能被正常执行
    echo $obj->protected; // 不可以在类外访问受保护的成员
    echo $obj->private; // 这行也会产生一个致命错误
    $obj->printHello(); // 输出 Public、Protected 和 Private
    
    
    /**
     * Define MyClass2
     */
    class MyClass2 extends MyClass
    {
        // 可以对 public 和 protected 进行重定义,但 private 而不能
        protected $protected = 'Protected2';
    
        function printHello()
        {
            echo $this->public;
            echo $this->protected;
            echo $this->private;//继承也不可以访问私有成员
        }
    }
    
    $obj2 = new MyClass2();
    echo $obj2->public; // 这行能被正常执行
    echo $obj2->private; // 未定义 private
    echo $obj2->protected; // 这行会产生一个致命错误
    $obj2->printHello(); // 输出 Public、Protected2 和 Undefined
    
    ?>
    

      

    接口

    使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

    接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

    接口中定义的所有方法都必须是公有,这是接口的特性。

    要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法。类可以实现多个接口,用逗号来分隔多个接口的名称。

    <?php
    
    // 声明一个'iTemplate'接口
    interface iTemplate
    {
        public function setVariable($name, $var);
        public function getHtml($template);
    }
    
    
    // 实现接口
    class Template implements iTemplate
    {
        private $vars = array();
      
        public function setVariable($name, $var)
        {
            $this->vars[$name] = $var;
        }
      
        public function getHtml($template)
        {
            foreach($this->vars as $name => $value) {
                $template = str_replace('{' . $name . '}', $value, $template);
            }
     
            return $template;
        }
    }

    常量

    在定义和使用常量的时候不需要使用 $ 符号

     
  • 相关阅读:
    C#创建自定义配置节
    linux下安装nginx
    linux查看防火墙状态和对外开放的端口状态
    js 获取二级域名
    .net core 获取本地ip及request请求端口
    《趣谈 Linux 操作系统》学习笔记(二):对 Linux 操作系统的理解
    《趣谈 Linux 操作系统》学习笔记(一):为什么要学 Linux 及学习路径
    Redis Cluster集群
    Redis的主从复制与Redis Sentinel哨兵机制
    Redis持久化方案
  • 原文地址:https://www.cnblogs.com/ldphoebe/p/6062411.html
Copyright © 2020-2023  润新知