当前位置: 首页 > news >正文

php基础语法_面向对象

PHP

php代码标记

多种标记来区分php脚本

ASP标记:<% php代码 %>

短标记:

脚本标记:

标准标记(常用):

简写风格:

ASP风格:<% php代码 %>

注意:简写风格和ASP风格需要在php.ini配置文件中修改以下配置为on,移植性差

highlighter- ini

short_open_tag = on
asp_tags = on

highlighter- php-template

<html><body><b><?php//脚本标记echo 'hello world';?></b>
</body>
</html>

php注释

行注释

//注释

注释

块注释

/*
注释
*/

php指令分隔符

;类似C语言,使用分号来结束指令

php数据类型

类型说明
boolean布尔型True and false
string字符串型字符序列
integer整型正负整数
float浮点型整,小数
array数组一组有序数据集合
object对象对象是类的实例,使用new命令创建
resource资源
NULL

$ 是php变量的标识符,所有变量都以$字符开头,无论是申明还是调用

布尔型boolean

直接将true or false赋值给变量即可

php

<?php$foo = True 
?>

整型

php

<?php
$a = 1234;		//十进制数
$a = -1234;		//复数
$a = 0123;		//八进制,(十进制83)
$a = 0x1A;		//十六进制(十进制26)
$a = 0b11111111;//二进制数字(255)
?>

PHP_INT_MAX 64位下最大值大约为9E18,当整数溢出时,会转换成科学计数法格式定义的浮点数。

浮点型

php

<?php
$a = 1.234
$b = 1.2e3;			//科学计数法
$c = 7e-10;			//科学计数法,负指数

字符串

单引号
双引号
Heredoc结构

复合类型

数组
对象

特殊类型

资源resource
NULL

PHP模式修饰符

在正则匹配时,用来强化正则表达式的能力

可以写为/html/i or /(?i)html/两种格式,并且修饰符之间是不需要分隔符号的,直接连续书写即可

修饰符说 明
i匹配时不区分大小写
m将字符串视为多行。^和$会匹配每一行的开始和结束点
s将字符串是为一行,换行符会被视为普通的字符
x忽略空白,转移的空白不会被忽略
e只用在preg_replace函数中,在替换字符串中逆向引用做正常的替换,将其(即“替换的字符串”)作为php代码求值,并用结果来替换所搜索的字符串
A匹配字符串的开头部分
D如果设置该修饰符,模式中的元字符$仅会匹配目标字符串的结尾。没有此选项时,如果最后一个字符是换行符的话,美元符号也会匹配此字符之前(但不会匹配任何其他换行符之前)。如果设定了m修饰符则忽略此选项
E与m相反,如果使用该修饰符,那么$将匹配绝对字符串的结尾,而不是换行符前,默认打开该模式
U非贪婪模式,与元字符?的作用相等,最大限度的匹配是贪婪模式,最小限度的匹配时非贪婪模式,即惰性模式
s单行模式

面向对象编程思想

  • 面向对象编程不是一种具体的技术,而是一种编程思想
  • 更方便与代码的重复利用
  • 一切皆对象
  • 所有的数据和功能都由主体(对象)来操作

跟面向过程的区别是,得先new一个对象,再去调用函数

面向对象基础

1.面向对象关键字说明

  • 类:class,是定义对象主体的最外层结构,用来包裹数据和函数,类是一类具有共性事物的代表。
  • 对象:object,是某类事物的具体代表,也是实际数据和功能操作的具体单元,也被称之为实例(instance)
  • 实例化:new,从一个抽象的概念得到一个符合抽象概念的具体实例的过程
  • 类成员:member,指class结构中创建的函数,类成员里有三种

2.面向对象简单技术实现

:根据对象分析后得到的一种通用结构(分类)

  • class关键字声明
  • 类名:自定义名字
  • 大括号

php

class 类名{}

实例化:类产生对象的过程

php

new 类名;
new 类名();   #使用更多

对象:根据某个类产生的某个具体存在的实体(instance),对象一般使用变量保存

php

$object = new 类名();

步骤:

  • 根据需求产生类结构class
  • 分析类拥有的数据
  • 分析类的行为

示例

php

<?php
class Ok{}
class IOS{}
$n = new Ok();
$m = new IOS();
var_dump($n);
var_dump($m);
?>
#     打印结果:
#     object(Ok)#1 (0) { } object(IOS)#2 (0) { }
#     object:对象
#     数字是编号,代表第几个对象
#     (Ok):所属类名
#     (0):成员变量(属性)个数
#     {}:具体成员变量信息(键值对)

类的命名规范

命名规范与函数类似,不能用数字开头

多单词用驼峰法:MyClass

3.类成员

目标:了解类成员的类型,作用,能够运用类成员去创建有效类

类成员

成员访问:属性和方法都属于对象访问,类常量属于类访问

类访问:

php

#实例化
$object = new 类名();
# 属性访问
$object->属性名;     # 此时不带属性本身的$符号(前面保存-对象的变量带$符号,object->属性名是整体)
# 方法访问
$object->方法名([实参列表]);

步骤

  1. 声明类结构
  2. 明确类产生的对象是否需要有数据的存储:确定属性
  3. 明确类产生的对象是否需要函数实现功能:确定方法
  4. 明确类是否需要定义常量
  5. 对象实例化
  6. 类成员访问(属性和方法)

示例

php

<?php
class Buyer{
public $name;
public $money = 0;
function display(){echo __CLASS__;
}
}
const BIG_NAME = 'BUYER';
$b = new Buyer();
$b->money = 10;
$b->eyes = 1;
unset($b->name);
var_dump($b);
$b->display();
?>

4.访问修饰限定符

修饰限定符:用在属性或者方法前的修饰关键字,用来控制属性或者方法的访问位置

  • 访问修饰限定符分类

​ public:公有,类内类外都可以访问

​ protected:受保护,只允许在相关类内部访问

​ private:私有,只能在类内访问,为方法准备的

  • 属性必须有访问修饰限定符,方法可以没有,默认public

步骤

  1. 声明类结构
  2. 确定类成员
  3. 确定类成员的访问位置限定,使用对应访问修饰限定符
  4. 只能在对应位置访问被修饰的成员

示例

1.公有成员访问

php

<?php
class Saler{#属性public $count = 100;#方法public function getCount(){echo __METHOD__;}public function setCount(){echo __METHOD__;}
}
#实例化对象
$s = new Saler();
#访问(类外)
echo $s->count;
$s->getCount();
$s->setCount();
?>

5.类内部对象

内部对象:$this,方法内部内置 的一个对象

2.类内部访问类成员,需要通过对象进行访问

php

<?php
class Saler{public $count = 100;protected $discount = 0.8;private $money = 100;public function getAll(){global $s;  #  需要获取到对象名字:因为方法本身就是函数,访问外部全局变量可以通过global引入实现echo $s->count,$s->discount,$s->money;}
}
$s = new Saler();
$s->getAll();
?>

3,使用内置对象$this访问

php

<?php
class Saler{public $count = 100;protected $discount = 0.8;private $money = 100;public function getAll(){#global $s;  #  需要获取到对象名字:因为方法本身就是函数,访问外部全局变量可以通过global引入实现#cho $s->count,$s->discount,$s->money;var_dump($this);echo $this->count,$this->discount,$this->money;}
}
$s = new Saler();
$s->getAll();
?>

$this代表的是对象,$this所在的环境为类内部的方法内部,所以$this对象是在类内部访问,因此可以访问所有的属性和方法,不受访问修饰限定符限制

6.面向对象的开发规范

  • 尽可能的增加类对成员的控制 ,尽多的使用private,少用public
  • 属性通常是私有化的,一般是通过设定方法来实现属性的访问和修改

7.构造方法

了解魔术方法的概念,明确触发模式,因为构造方法是魔术方法

构造方法:__construct(),是一种类结构特有的特殊方法,由系统规定好,有了构造方法的类在实例化对象之后,对象就会自动调用

  • 构造方法是一种魔术方法:魔术方法会被自动触发,不需要手动调用
  • 构造方法的目标市实现对象的初始化

​ 对象实例化会自动调用

​ 构造方法通常是为了实现对象所需资源的初始化

  • 构造方法本质还是一种方法

​ 受访问修饰限定符控制

​ 对象可以选择调用(一般不会)

  • 可以设定形参,对应的实参市在实例化对象的时候传入:new 类名(实参传递给形参)

highlighter-

示例

构造方法实现:

php

<?php
class Saler{public fuction __construct(){echo __CLASS__;}
}
new Saler();
?>

一旦构造方法拥有了形参,那么对象在调用该方法的时候就应该传入对应的实参,而构造方法又是自动调用的,所以需要在实例化对象的时候使用new类名(构造方法对应的实参列表)来实现

php

<?php
class Saler{public $count;private $money;public function __construct($count,$money){echo __CLASS__;#初始化$this->count = $count;$this->money = $money;}
}
$s1 = new Saler(100,100);
$s2 = new Saler(999,999);
var_dump($s1,$s2);
?>

__construct()允许手动调用:

php

<?php
class Saler{public $count;private $money;public function __construct($count,$money){echo __CLASS__;#初始化$this->count = $count;$this->money = $money;}
}
$s1 = new Saler(100,100);
$s2 = new Saler(999,999);
$s2->__construct(0,0);     #__construct()允许手动调用
var_dump($s1,$s2);
?>

小结

8.析构方法

主动调用析构方法

highlighter- elixir

$s ->__destruct();

当主动调用析构方法,其实他就是只是一个普通的方法,不会销毁对象

析构方法是当对象销毁的时候调用

9.对象传值

小结:

对象传值方式是引用传值,不论对象如何被赋值给其他对象,始终只有一个内存地址。

10.范围解析操作符(类常量访问)

php

<?php
#范围解析操作符
class Saler{const PI = 3.14;
}
$s1 = new Saler;
#echo $s1;   #无法访问
echo Saler::PI;
echo $s1::PI;    #范围解析操作符兼容对象,找到对象所属类,最终进行访问
?>

不过我们一般不建议使用echo $s1::PI;。

  • PHP

相关文章:

php基础语法_面向对象

PHP php代码标记 多种标记来区分php脚本 ASP标记&#xff1a;<% php代码 %> 短标记&#xff1a; 脚本标记: 标准标记&#xff08;常用&#xff09;&#xff1a; 简写风格&#xff1a; ASP风格&#xff1a;<% php代码 %> 注意&#xff1a;简写风格和ASP风格…...

开源模型应用落地-LangChain高阶-LCEL-表达式语言(八)

一、前言 尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么? LCEL是一种非常灵活和强大的语言,可以帮助您更…...

c# 协议数据计算陀螺仪的角度,带符号

subStrL str.Substring((76 - 8), 2); subStrH str.Substring((78 - 8), 2); Data[7] (short)(Convert.ToInt16(subStrH, 16) * 256 Convert.ToInt16(subStrL, 16));//角度X subStrL str.Substring((80 - 8), 2); subStrH str.Subst…...

ArcGIS arcpy代码工具——批量要素裁剪栅格影像

系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…...

discuz插件之优雅草超级列表互动增强v1.2版本更新

https://doc.youyacao.com/9/2142 v1.2更新 discuz插件之优雅草超级列表互动增强v1.2版本更新 [title]20220617 v1.2发布[/title] 增加了对php8的支持 增加了 对discuz3.5的支持...

三、用户中心项目笔记----后端多环境实战+原始部署

后端多环境主要是修改&#xff1a; 依赖的环境地址 数据库地址 缓存地址 消息队列地址 项目端口号 服务器配置 后端怎么去区分不同的环境&#xff1f; 我们后端的SpringBoot项目&#xff0c;通过application.yml添加不同后缀来区分配置文件 application.yml就是公共的配置&a…...

SpringMVC的使用

SpringMVC详情 RequestMapping("/hello") 负责用户的请求路径与后台服务器之间的映射关系 如果请求路径不匹配,则用户报错404 ResponseBody 作用: 将服务器的返回值转化为JSON. 如果服务器返回的是String类型,则按照自身返回. 新增: post请求类型 PostMapping("…...

Vue73-命名路由

一、路由的name属性 二、小结...

TrustOne发布一周年成绩单,15000家数智化转型客户的选择!

新一代终端安全TrustOne 发布一周年 交出亮眼成绩单 目前已经为 15000家数智化转型客户 带来高效、全方位的解决方案 TrustOne 新一代终端安全 2023年6月 新一代终端安全TrustOne正式发布&#xff0c;极简新主义的创新理念为数字变革而来&#xff1b; 2023年12月 IDC&…...

Nginx实战:故障处理_后端服务正常,nginx偶发502(Bad Gateway)

一、故障场景 用户访问服务偶发报错【502 Bad Gateway】,但是服务后端正常运行。架构如下: #mermaid-svg-4dDszusKEuPgIPlt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-4dDszusKEuPgIPlt .error-icon{fill:#5…...

mac系统清理软件哪个好用?CleanMyMac X清理工具轻松拿捏mac

还在为 mac 电脑里的垃圾文件、无用缓存和隐私痕迹而烦恼&#xff1f;想找一个软件直接全面清理优化电脑&#xff1f;维护苹果设备的清洁和高效运行是非常重要的&#xff0c;特别是在设备经过长时间使用后。有效的苹果清理软件不仅可以帮助您节省时间&#xff0c;还能延长设备的…...

拔掉独显提升性能,AMD新一代核显可以通杀主流游戏了

在今年台北电脑展上&#xff0c;AMD 除了带来了全新的 Ryzen 9000 系列。 与此同时也带来了全新的移动端处理器 Ryzen AI 9 HX 300 系列。 来源&#xff1a;AMD 也许是在 AI 领域稍晚一步&#xff0c;AMD 的全新移动端处理器命名直接把 AI 焊在脸上。 也就是咱们今天的主角 R…...

关于单片机那些事?

周期 时钟周期&#xff1a;也叫振荡周期&#xff0c;就是单片机外接晶振的倒数&#xff0c;如12Mhz&#xff0c;周期就是1/12us&#xff0c;最小的时间单位。频率越高&#xff0c;速度越快 指令周期&#xff1a;执行一条指令需要的时间&#xff0c;一般由若干个机器周期组成 …...

第5章 传输层

王道学习 考纲内容 &#xff08;一&#xff09;传输层提供的服务 传输层的功能&#xff1a;传输层寻址与端口&#xff1b;无连接服务和面向连接服务 &#xff08;二&#xff09;UDP UDP数据报&#xff1b;UDP检验 &#xff08;三&#xff09;TCP …...

典型传感器简介及驱动安装

双目视觉传感器 Indemind 传感器简介 INDEMIND M1 是专为开发者提供的一款硬件&#xff0c;采用“双目摄像头IMU”多传感器融合架构与 微秒级时间同步机制&#xff0c;为视觉 SLAM 研究提供精准稳定数据源&#xff0c;以满足 SLAM 研究、导航及 避障开发、视觉动作捕捉开发、…...

linux和Win——显卡驱动、Anaconda及pytorch安装(无需单独安装cuda、cudnn)

今天给新电脑的双系统&#xff08;windows11和ubuntu22.04&#xff09;安装了深度学习环境&#xff0c;在此记录一下。 一、Linux系统 &#xff08;一&#xff09;安装显卡驱动 &#xff08;1&#xff09;在安装Nvidia显卡驱动前&#xff0c;一定要点一下下面的“软件更新器…...

机器学习之多模态学习FLAVA(Foundational Language and Vision Alignment)

FLAVA(Foundational Language and Vision Alignment)是Meta AI提出的一种多模态学习模型,旨在处理自然语言和视觉任务。FLAVA通过联合学习文本和图像的特征表示,实现了在多模态任务上的优异性能。 FLAVA的基本概念 多模态学习: 多模态学习涉及同时处理多种类型的数据,例…...

Maven高级-证书校验

文章目录 SSL忽略配置IDEA里配置SSL忽略补充场景 SSL忽略配置 mvn -X clean install -Dmaven.resolver.transportwagon -Dmaven.wagon.http.ssl.insecuretrue -Dmaven.wagon.http.ssl.allowalltrue -Dmaven.wagon.http.ssl.ignore.validity.datestrueIDEA里配置SSL忽略 两个地…...

flutter是app跨平台最优解吗?

哈喽&#xff0c;我是老刘 最近在知乎上看到这样一个问题 我们先来解释一下问题中碰到的几个现象的可能原因&#xff0c;然后聊聊跨平台的最优解问题 问题解释 1、跟手、丝滑问题 这个问题其实很多人是有误解的&#xff0c;觉得原生的就丝滑跟手 其实不是这样的 我在做Flut…...

算法 Hw9

Hw 9 1 Scheduling with profits and deadlines12345 2 Parallel machine1234 1 Scheduling with profits and deadlines 1 决策问题表述&#xff1a; 给定一个利润值 P P P&#xff0c;是否存在一个任务调度方案使得完成所有任务的总利润至少为 P P P 2 在 NP 类中&…...

2026最新!录音软件哪个最好用?4款亲测免费实用神器,避坑省钱真香!

做内容的要整理访谈&#xff0c;职场要记会议纪要&#xff0c;学生要转课堂录音&#xff0c;做调研的要整理访谈录音——不同人群需求不一样&#xff0c;但核心诉求都是&#xff1a;准、快、不瞎收钱。我花了一周亲测4款热门录音转写工具&#xff0c;直接给结论&#xff1a;听脑…...

告别全屏地球!用Cesium.js在地图上只显示一个县(附完整代码)

用Cesium.js实现区域聚焦&#xff1a;打造专属行政区划三维地图 在WebGIS开发中&#xff0c;我们经常遇到需要将三维地球的显示范围限定在特定行政区划内的需求。无论是为了突出展示某个城市的发展规划&#xff0c;还是为了制作县域级别的专题地图&#xff0c;区域聚焦技术都能…...

ESXi 8.0U3i 新版本深度解析|官方原版核心优势 + 部署指南,稳定运维首选

随着企业虚拟化、私有云部署需求的不断升级&#xff0c;一款稳定、安全、可追溯的底层虚拟化系统&#xff0c;成为数据中心、机房运维与合规生产的核心诉求。VMware ESXi 8.0U3i&#xff08;版本 8.0U3i-25205845&#xff09;作为 8.0 系列 2026 年最新推出的稳定版本&#xff…...

200万像素GC2145摄像头怎么玩?手把手教你用AiPi-Cam-D200开发板快速搭建无线图传

200万像素GC2145摄像头实战指南&#xff1a;零代码玩转AiPi-Cam-D200无线图传 当你拆开AiPi-Cam-D200开发板的包装&#xff0c;看到那块小巧的GC2145摄像头时&#xff0c;可能既兴奋又忐忑——这个看起来像玩具的设备&#xff0c;真能实现专业级的无线图传吗&#xff1f;作为创…...

Markdown到思维导图的架构化转换:基于AST解析与D3渲染的技术实现

Markdown到思维导图的架构化转换&#xff1a;基于AST解析与D3渲染的技术实现 【免费下载链接】markmap Build mindmaps with plain text 项目地址: https://gitcode.com/gh_mirrors/ma/markmap Markdown思维导图转换技术通过结构化文本解析与可视化渲染引擎的协同工作&a…...

ARM项目模板在嵌入式开发中的高效应用

1. ARM项目模板在嵌入式开发中的核心价值在嵌入式系统开发领域&#xff0c;ARM架构处理器凭借其优异的功耗性能比占据着主导地位。作为开发者&#xff0c;我们经常面临这样的困境&#xff1a;每个新项目都要重复搭建基础框架&#xff0c;配置编译工具链&#xff0c;设置调试环境…...

用户为中心交互系统工程在智能制造系统中应用

用户为中心交互系统工程&#xff08;User-Centered Interaction System Engineering, UCI-SE&#xff09;是智能制造与 AI 时代下&#xff0c;重塑传统工业软件&#xff08;如 MES、ERP、SCADA&#xff09;和硬件控制终端&#xff08;如 HMI、具身智能教导盒&#xff09;的核心…...

机器人全身控制与SLAM系统核心技术解析

1. 机器人全身控制技术解析Sprout机器人采用的全身控制策略&#xff08;Whole-Body Policy&#xff09;通过分层控制架构实现了稳定运动与精准操作的平衡。该系统将控制分为三个主要层级&#xff1a;骨盆姿态控制、上肢柔顺控制和高度调节。这种分层设计使得机器人能够在保持上…...

英特尔马来西亚六厂布局:先进封装如何重塑半导体制造与供应链

1. 项目概述&#xff1a;从一则新闻到半导体制造的全球拼图前几天&#xff0c;行业里不少朋友都在转一条消息&#xff0c;说英特尔在马来西亚的封装产能布局又有新动作&#xff0c;计划要搞到六座工厂的规模。乍一看&#xff0c;这好像就是个普通的海外建厂新闻&#xff0c;但如…...

揭秘哔咔漫画下载器:打造高效离线漫画图书馆的完全指南

揭秘哔咔漫画下载器&#xff1a;打造高效离线漫画图书馆的完全指南 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh…...