php面向对象

PHP语言的面向对象编程 面向对象编程是一种通过“对象”来组织代码的编程范式。与传统的过程式编程不同,OOP注重将数据与操作数据的函数封装在一起,从而提高代码的可重用性、可维护性和可扩展性。类(Class):类是创建对象的蓝图或模板,它定义了对象的属性和行为。对象(Object):对象是类的实例,通过类来创建,具有类定义的属性和行为。封装(Encapsulation):通过封装,将对象的内部状态保护起来,外部只能通过公共方法访问或修改这些状态。继承(Inheritance) 阅读详情


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();









PHP基础之面向对象 面向对象是一个编程思想。编程思想有面向过程和面向对象面向过程:编程思路集中的是过程上面向对象:编程思路集中在参与的对象以去饭馆吃饭为例:​ 面向过程:点菜——做菜——上菜——吃饭——结账——收拾​ 面向对象:服务员,厨师,客人构造方法也叫构造函数,当实例化对象的时候自动执行。} 注意:前面是两个下划线例题 阅读详情

相关推荐

PHP||PHP面向对象编程相关题目

::“可以在没有声明任何实例的情况下访问类中的成员,在子类的重载方法中调用父类中被覆盖的方法,分三种情况下使用,使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。.当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在父类。,类中的变量有用户名、密码和记录用户数量的变量,定义类。的构造方法、获取和设置密码的方法和显示用户信息的方法。,修饰的成员属性可以被同一个类中的所有对象共享;,修饰的成员属性可以被不同类中的所有对象共享。.如果没有定义类的构造函数,则无法创建类的对象。

weixin_63378697的博客 1002

PHP面向对象编程

万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性好。具有抽象方法的类为抽象类,抽象方法即为没有内容的空方法,要求子类进行完善内容,抽象类不能实例化,只能继承,通过 extends 来实现,抽象类中也可以定义普通方法。接口(Interface)是一种定义了一组方法的抽象类型,它只定义了方法的签名(名称、参数和返回类型),而没有具体的实现。抽象类可以包含具体的方法实现,也可以包含抽象方法的声明。

代码炼金术 6788

界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算

引言:目前工程上主要有螺栓,过盈,焊接和胶粘四种常用的连接方式,本文基于ANSYS Workbench环境,引入内聚力模型来实现对胶粘结构界面开裂失效的计算,文中的界面失效参数为随意给定,不是工程实际测试数据,仅起到演示作用!1.问题的描述如图所示给出了胶粘结构的三维模型,该胶粘结构由上下钢板组成,中间通过胶粘接到一起。(胶不需要建模,其影响主要通过内聚力模型实现)上下板的材料为结构钢,...

weixin_29473667的博客 1万+

PHP 面向对象

PHP 定义类通常语法格式如下:phpvar $var1;[..][..]?解析如下:类使用class关键字后加上类名定义。类名后的一对大括号({})内可以定义变量和方法。类的变量使用var来声明, 变量也可以初始化值。函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

xiaoniu0168的博客 1064

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项

无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C

WEL测试 8780

【3d打印】基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置

基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置(启庞Kp3s V1)

共享IT之美,共创机器未来 3192

PHP面向对象

面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实是必然的过程。面向对象的设计主要思路就是将程序和数据封装在一个叫对象的基本单位之中来提高重用性,灵活性和可扩展性。他同面向过程和函数式编程的设计思路一样是编程语言的一种范式,是一种规范编程程序的设计方...

lulailei的博客 487

Linux下自动化解析q7签名文件的有效期与时间戳

本文详细介绍了在Linux环境下自动化解析q7签名文件有效期与时间戳的方法。通过编写高效脚本,开发者可以批量提取签名时间信息,验证签名有效性,并集成到CI/CD流程中。文章提供了完整的脚本实现,包括错误处理、批量处理功能,并解决了常见环境问题,特别适用于国产操作系统如UOS的开发场景。

weixin_30872499的博客 519

PHP之面向对象PHP之面向对象(面向对象是什么)

PHP之面向对象(面向对象是什么) 一、总结 一句话总结: 面向对象就是类:类都要 属性 和 方法 比如人:属性比如身高体重,方法比如吃饭喝水 面向对象中,方法即是函数;属性即是变量,只是面相对象中一般说方法和属性 1、面向对象自己涉及到的实例? 比如怪物,有普通怪物,精英怪物,boss怪物,不同怪物的血量,攻击防御等都是不同的,先设置怪物基类,里面有基...

weixin_30359021的博客 110

Unreal5从入门到精通之EnhancedInput增强输入系统详解

从Unreal5开始,老版的输入系统,正式替换为EnhancedInput增强型输入系统,他们之间有什么区别呢?如果有使用过Unity的同学,大概也知道,Unity也在2020版本之后逐渐把输入系统也升级成了新版输入系统,为什么Unreal和Unity都热衷于升级输入系统呢?这之间又有什么联系呢?官方:增强输入EnhancedInput希望这篇文章能够对你有所帮助。

TxNet 944

YOLO系列专栏(十二):YOLO26行业落地实战(三):无人机航拍场景——户外巡检(机载边缘计算+YOLO26)

无人机航拍巡检场景,面临机载设备算力/显存有限、高空航拍目标小、户外环境复杂(风力、光线变化)、图像抖动等问题,对模型的轻量化、实时性、小目标检测能力要求极高。YOLO26相比传统模型,在该场景中具备三大核心优势:✅ 极致轻量化:INT8量化+模型剪枝后,模型体积可压缩至5MB以内,显存占用控制在512MB以内,适配Jetson Xavier NX等机载边缘计算设备;✅ 小目标检测能力强:优化检测头与锚框配置,可精准识别高空航拍中的小尺寸目标(如线路断股、绝缘子裂纹),检测准确率高;

qq_36130719的博客 258

PHP面向对象之封装

市面上,很多讲解PHP的书对面向对象的内容讲的很简单。而官方文档也不足之处,例如有些语法细节没有说清楚。还有,官方文档的内容感觉比较散,不能将所有面向对象的内容串联起来。所以,现做个学习笔记,将自己学习的PHP面向对象输出出来。 首先,面向对象的三个特点:封装、继承、多态。我将从这三个方面把PHP面向对象的内容都串联起来。接下来,将从封装的角度讲解PHP面向对象。 (一)所谓封装,最直观的理解

码出幸福人生 2570

MacBook 长期挂机 OpenClaw:电池保护 + 防休眠设置

本文介绍了MacBook长期挂机运行OpenClaw时的电池保护和防休眠设置方案。主要内容包括:1)电池保护策略,通过电源连接、充电限制和定期充放电维护电池健康;2)防休眠设置,禁用系统休眠、自动休眠和屏幕休眠;3)OpenClaw的Docker部署方法。文章提供了详细的命令行脚本和配置说明,帮助用户实现MacBook的长期稳定运行,同时保护电池寿命。

一键难忘的博客 1695

php 中面向對象,PHP中面向对象

本篇文章主要介绍php中的面向对象,感兴趣的小伙伴了解下,希望对大家有所帮助。1.面向对象的基本概念面向对象包括3部分:面向对象分析(Object Oriented Analysis,OOA),面向对象设计(Object Oriented Design,OOD)以及面向对象编程(Object Oriented Program),面向对象两个重点概念是类和对象。类:类是变量与作用于这些变量的方法的集...

weixin_42513028的博客 70

SerDes系列之 SSC扩频时钟技术

扩频时钟,又称展频(SSC-Spread Spectrum Clocking),当前PCIE、DDR、USB等几乎所有的高速接口都支持SSC的功能。电子工程师在日常的电气测试中经常与之接触,在电磁传导和辐射发射验证过程中,经常需要使用到芯片的SSC功能,它的物理表现形式,就是信号的比特率会在一个很小的范围内浮动,多见于周期性变化的时钟信号。

一只豌豆象的博客 3441

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

php中面向对象的理解

来源 今天来和大家介绍一下PHP的面向对象。说到面向对象,我不得不提一下面向过程,因为本人在初学时,常常分不清楚面向对象和面向过程, 面向对象编程(OOP)是我们编程的一项基本技能,PHP5对OOP提供了良好的支持。如何使用OOP的思想来进行PHP的高级编程,对于提高PHP编程能力和规划好Web开发构架都是非常有意义的。下面我们就通过实例来说明使用PHP的OOP进行编程的实际意义和...

乐逍遥 954

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

php面向对象详解,php面向对象详解

前言自从php进入5.0版本以来,PHP开始全面地支持面向对象编程。嗯,谁说php很low。我们专注web开发好不好;谁说php代码烂,自己水平不行写的代码当然烂了;谁说php框架不优雅的,你用过laravel吗。好了,进入正题,面向对象的三大特性分别是封装性,继承性以及多态性,使用面向对象开发,让我们的程序可维护以及扩展性大大提高。基本知识类:具有相同属性或方法的一类集合体。比如雪佛兰汽车是一个...

weixin_29075633的博客 274

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

php发属史,PHP面向对象的历史

PHP面向对象的历史PHP最开始的perl脚本,到C语言版的PHP/FI,再到PHP/FI 2.0、PHP3.0,直到PHP4,引入Zend Engine使PHP更加的强大,并在PHP5引入新的Zend Engine2,重写PHP的面向对象模型,使PHP不仅可以快速开发,同时也可以实现更加复杂的架构,甚至满足企业应用。PHP最开始并没有面向对象,直到PHP4才有一些面向对象的影子,到PHP5才真正...

weixin_36036271的博客 235

PHP面向对象基础总结

近来参加了几场PHP工程师的面试,但是笔试题答得都不理想,回来总结了一下失败的原因,是没看PHP手册。几家公司的PHP基础面试题都可以在PHP手册上找到。哎,现在才知道最好的面试宝典是PHP手册。 下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册。 1.类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。 2.属性中的变量可以...

Jack huang 的技术笔记 484

php支持面向对象吗,PHP是否支持面向对象的编程

PHP支持面向对象编程。面向对象编程思想:OOP:Object Oriented Program(面向对象编程)就是将要完成的任务(工作、事情),分拆为不同的“对象”要做的不同的子任务,程序开始后,每个不同的对象,依据“他人的要求”,去完成自己的子任务,最后大家都按计划完成后,则总任务也就完成。PHP的特点:(一)开源性和免费性由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己...

weixin_29111277的博客 392
上一篇: php中的include和require
下一篇: php常用库函数
thystar
博客等级 码龄17年 407粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值