zoukankan      html  css  js  c++  java
  • php基础-5

     php的面相对象

    •  1 <?php
       2 
       3 
       4 class Hello
       5 {
       6     public function say_hello()
       7     {
       8         echo "hello";
       9     }
      10 }
      11 
      12 $say = new Hello();
      13 $say->say_hello();

      先使用关键字class创建一个Hello类,在类里面写一个公开的方法say_hello().

              在外部调用的时候直接用关键字new 接类名然后在用一个变量接收,这样就完成了一个类的实例化。接下来这个变量既可以使用这个类的方法。

    • php的命名空间
    • 当不同文件里有多个相同的类名的时候,这时候为了便于区分,php提供了一个命名空间的概念。
    • 在index.php文件的同级目录下新建两个文件夹"first", "second".分别在里面新建两个相同名字的php文件,php文件的内容分别是:

       1 <?php
       2 /**
       3  * Created by PhpStorm.
       4  * User: HIAPAD
       5  * Date: 2019/3/23
       6  * Time: 9:39
       7  */
       8 
       9 namespace first;
      10 
      11 
      12 class Hello
      13 {
      14     public function sayhello(){
      15         echo "我是first里面的hello";
      16     }
      17 }
       1 <?php
       2 /**
       3  * Created by PhpStorm.
       4  * User: HIAPAD
       5  * Date: 2019/3/23
       6  * Time: 9:40
       7  */
       8 
       9 namespace second;
      10 
      11 
      12 class Hello
      13 {
      14     public function sayhello(){
      15         echo "我是second里面的hello";
      16     }
      17 }

      可以看到,两个php文件里面的类名,类方法名字都是一样的,这个时候我们在引入的时候可能会出现冲突。php命名空间,也就是这里面的namespace,为我们解决了这个问题。接下来我们在index.php中来引入这两个文件

       1 <?php
       2 /**
       3  * Created by PhpStorm.
       4  * User: HIAPAD
       5  * Date: 2019/3/23
       6  * Time: 9:16
       7  */
       8 
       9 require 'firstHello.php';
      10 require 'secondHello.php';
      11 
      12 $i = new firstHello();
      13 $i->sayhello();
      14 $i = new secondHello();
      15 $i->sayhello();

      引入文件用的是require 后面接文件的相对路径的字符串形式。在类的实例化的时候,用namespace接该namespace下的类的名字来完成对应的类的实例化。      

    • 类的初始化
       1 <?php
       2 
       3 class Hello{
       4     public function __construct(){
       5         echo "hello";
       6     }
       7 }
       8 
       9 
      10 $i = new Hello();

       php类的初始化方法__construct方法,会在类的对象被实例化的时候执行。

    • 类的初始化传参
       1 <?php
       2 
       3 class Hello
       4 {
       5     public function __construct($name, $age)
       6     {
       7         $this->age = $age;
       8         $this->name = $name;
       9     }
      10 
      11     public function getInfo()
      12     {
      13         return "这个人的名字是$this->name,他今年$this->age"."岁";
      14     }
      15 }
      16 
      17 $i = new Hello("bob",18);
      18 echo $i->getInfo();

      在类的__construct方法里面传入的参数可以用$this->params变量接收,在接下来类的方法里面可以调用$this->params变量来操作。__construct相当于python里面的__init__()方法,this相当于python里面的self。

    • php的成员方法和类方法
       1 <?php
       2 
       3 class Hello
       4 {
       5     public function __construct($name, $age)
       6     {
       7         $this->age = $age;
       8         $this->name = $name;
       9     }
      10 
      11     public function getInfo()
      12     {
      13         return "这个人的名字是$this->name,他今年$this->age"."岁";
      14     }
      15 
      16     public static function getAge(){
      17         return "这是一个静态方法和类方法";
      18     }
      19 }
      20 echo Hello::getAge();

      在类中创建方法的时候使用关键字static来创建一个静态方法和类方法。静态方法不会调用这个类里面的其他类属性和类方法。类方法可以直接被类本身调用,不用通过类的初始化对象来访问。访问方法:类名::方法名().

    php 的public、private、protected的区别

    • public 表示全局,类内部外部子类都可以访问;
    • private表示私有的,只有本类内部可以使用;
    • protected表示受保护的,只有本类或子类或父类中可以访问;
  • 相关阅读:
    3.消息队列和事件循环
    2.V8工作原理
    1.浏览器中的Javascript执行机制
    入前端之门半年的感想
    前端面试相关知识点整理记录
    Nginx报错——upstream timed out 10060
    浅谈偏向锁、轻量级锁、重量级锁
    Debug 的一点思路
    Shiro 之 HashedCredentialsMatcher 认证匹配
    计算机网络基础 之六:应用层
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10582705.html
Copyright © 2011-2022 走看看