php的面相对象

  •  <?php
    
     class Hello
    {
    public function say_hello()
    {
    echo "hello";
    }
    } $say = new Hello();
    $say->say_hello();

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

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

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

     <?php
    /**
    * Created by PhpStorm.
    * User: HIAPAD
    * Date: 2019/3/23
    * Time: 9:39
    */ namespace first; class Hello
    {
    public function sayhello(){
    echo "我是first里面的hello";
    }
    }
     <?php
    /**
    * Created by PhpStorm.
    * User: HIAPAD
    * Date: 2019/3/23
    * Time: 9:40
    */ namespace second; class Hello
    {
    public function sayhello(){
    echo "我是second里面的hello";
    }
    }

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

     <?php
    /**
    * Created by PhpStorm.
    * User: HIAPAD
    * Date: 2019/3/23
    * Time: 9:16
    */ require 'first\Hello.php';
    require 'second\Hello.php'; $i = new \first\Hello();
    $i->sayhello();
    $i = new \second\Hello();
    $i->sayhello();

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

  • 类的初始化
     <?php
    
     class Hello{
    public function __construct(){
    echo "hello";
    }
    } $i = new Hello();

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

  • 类的初始化传参
     <?php
    
     class Hello
    {
    public function __construct($name, $age)
    {
    $this->age = $age;
    $this->name = $name;
    } public function getInfo()
    {
    return "这个人的名字是$this->name,他今年$this->age"."岁";
    }
    } $i = new Hello("bob",18);
    echo $i->getInfo();

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

  • php的成员方法和类方法
     <?php
    
     class Hello
    {
    public function __construct($name, $age)
    {
    $this->age = $age;
    $this->name = $name;
    } public function getInfo()
    {
    return "这个人的名字是$this->name,他今年$this->age"."岁";
    } public static function getAge(){
    return "这是一个静态方法和类方法";
    }
    }
    echo Hello::getAge();

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

php 的public、private、protected的区别

  • public 表示全局,类内部外部子类都可以访问;
  • private表示私有的,只有本类内部可以使用;
  • protected表示受保护的,只有本类或子类或父类中可以访问;

php基础-5的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  10. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

随机推荐

  1. zabbix3.4.7配置邮件告警详细步骤

    Zabbix服务器操作 1.  安装sendmail或postfix (邮件传送代理MTA),本教程使用sendmail软件. (标注:如果直接使用外部邮箱发送邮件可以不需要配置sendmail或po ...

  2. 学习笔记-AngularJs(五)

    之前的页面太丑了,后来我引入了bootstrap.css,把样式进行修了一番,如下图(一不小心,插入个链接,忽略,http://t.cn/RUbL4rP): (链接:http://www.live08 ...

  3. 蓝桥杯—ALGO-2 最小最大公倍数

    问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式输入一个正整数N. 输出格式输出一个整数,表示你找到的最小公倍数.样例输入9样例输出504数据规模与约定1 ...

  4. day03 基本数据类型

    1.什么是数据类型 变量值即我们 存放的数据 ,数据类型及变量值的类型 2.变量值为何要区分类型 因为变量值使用记录现实世界中事物的特征,针对不同的特征就应该用不同类型的值去标识 3.如何应用数据类型 ...

  5. pyhton字符串

    a = 5 # 1 + 1 = 10 + 1 = 11 + 1 = 100 + 1 = 101print(a.bit_length()) # 计算一个数字的二进制长度. a = 10# print(t ...

  6. zookeeper集群环境搭建(使用kafka的zookeeper搭建zk集群)

    ---恢复内容开始--- 使用kafka的zookeeper来搞集群的话和单纯用zk的其实差不了多少. 0.说在前头,搭建kafka集群之前请把每个服务器的jdk搞起来. 1.安装kafka wget ...

  7. HTML(二)选择器

    1.id选择器 一对一关系 <div id="only">123</div> #only{ background-color:black; } 2.clas ...

  8. day18 类与类之间的关系

    今日所学内容: 1.类与类之间的关系 2.self 到底是谁? 3. 特殊成员 : 1.类与类之间的关系 在我们的世界中事物和事物之前总会有一些联系 在面向对象中,类与类之间也可以产生相关的联系 1) ...

  9. Android开发 ---如何操作资源目录中的资源文件2

    Android开发 ---如何操作资源目录中的资源文件2 一.颜色资源管理 效果图: 描述: 1.改变字体的背景颜色 2.改变字体颜色 3.改变按钮颜色 4.图像颜色切换 操作描述: 点击(1)中的颜 ...

  10. jaxb 组装及解析xml

    参考 http://blog.csdn.net/yanan_seachange/article/details/7325708 a.添加依赖 b.建立绑定关系 c.测试 a.添加依赖 <depe ...