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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

myslql事务示例

在 MySQL 中&#xff0c;事务&#xff08;Transaction&#xff09;是一组要么全部执行&#xff0c;要么全部不执行的SQL语句。这可以确保数据的一致性和完整性。事务管理的核心包括四个属性&#xff0c;即原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consiste…

RegionClip环境安装踩坑指南

RegionClip环境安装 RegionClip环境安装)问题1问题2问题3问题4问题5 RegionClip环境安装) 特别强调&#xff0c;不要单独去安装detectron2&#xff0c;会出现model.clip不存在的错误&#xff0c;通过python -m pip install -e RegionCLIP就可以问题1 问题&#xff1a;torch-c…

安卓SDK发布到maven

【参考文档】 maven central:https://vanniktech.github.io/gradle-maven-publish-plugin/central/#in-memory-gpg-key 安装gpg&#xff1a; https://central.sonatype.org/publish/requirements/gpg/#publish-or-drop-the-deployment 【流程】 1、进入Maven Central: P…

sourceTree 解决remote: HTTP Basic: Access denied报错mac

解决sourceTree中remote: HTTP Basic: Access denied报错 mac sourcetree报错报错原因解决方案 mac sourcetree报错 warning: invalid credential line: xxx.com remote: HTTP Basic: Access denied fatal参考链接&#xff1a;https://developer.aliyun.com/article/1304149 …

在分数限制下,是选择好专业还是好学校取决于你个人的兴趣、职业规划和实际情况。

分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 方向一&#xff1a;专业解析 选择专业与选择学校之间的决策确实是一个复杂的过程&#xff0c;涉及到个人兴趣、职业目标以及教育资源等多个因素。我来结合实际场景&#xff0c;探讨不同专业的优势、未来挑战以及专业与…

高效学习方法笔记

part1.学习方法: 1.知识多不等于学习能力强&#xff1b; 2.考试是最有效的学习策略&#xff1b; 3.间隔练习使知识存储更牢固&#xff1b; 4.自我检索&#xff08;反思&#xff09;能更好的掌握知识&#xff1b; 5.穿插练习有助于长期记忆&#xff1b; 6.多样性练习促进知识的…

ruoyi登录功能源码分析

Ruoyi登录功能源码分析 上一篇文章我们分析了一下若依登录验证码生成的代码&#xff0c;今天我们来分析一下登录功能的代码 1、发送登录请求 前端通过http://localhost/dev-api/login向后端发送登录请求并携带用户的登录表单 在后端中的com.ruoyi.web.controller.system包下…

mysql中使用json_arrayagg(),指定数组中元素排序

背景&#xff1a; 按照某个字段分组&#xff0c;分组后将同类型的元素聚合在一个数组中&#xff0c;最后再比较数组是否相等。 使用json_arrayagg()&#xff0c;数组中元素排序为数据所属表的默认排序&#xff0c;不满足比较数组是否相等的需求。 既然要排序&#xff0c;于是写…

14-Kafka-Day03

第 5 章 Kafka 消费者 5.1 Kafka 消费方式 5.2 Kafka 消费者工作流程 5.2.1 消费者总体工作流程 一个消费者组中的多个消费者&#xff0c;可以看作一个整体&#xff0c;一个组内的多个消费者是不可能去消费同一个分区的数据的&#xff0c;要不然就消费重复了。 5.2.2 消费者…

WIC 图像处理初体验——读取像素的值

先放上运行结果&#xff1a; 可以发现红绿蓝是从后往前的。 必须以C方式编译代码&#xff01; #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <wincodec.h>int main(void) {CoInitialize(nullptr);IWICImagingFactory* fac;CoCreateInstance(CLS…

勒索病毒猖狂,请提前做好安全防护,德迅卫士保护你的安全

随着互联网的飞速发展&#xff0c;网络安全问题日益凸显。其中&#xff0c;勒索病毒作为一种极具危害性的网络安全威胁&#xff0c;已经引起了广泛关注。为了帮助大家更好地预防和应对勒索病毒攻击&#xff0c;我们特地为您精心准备了这份超实用的勒索病毒自救预防指南。让我们…

数据中心技术:大数据时代的机遇与挑战

在大数据时代&#xff0c;数据中心网络对于存储和处理大量信息至关重要。随着云计算的出现&#xff0c;数据中心已成为现代技术的支柱&#xff0c;支持社交媒体、金融服务等众多行业。然而&#xff0c;生成和处理的大量数据带来了一些挑战&#xff0c;需要创新的解决方案。在这…

Android系统 抓trace方法(手机及车机)

1、先说说什么是trace trace是一种以perfetto.trace结尾的文件。一般用来分析卡顿、启动时间慢等问题&#xff0c;还可以用来分析方法耗时&#xff0c;android系统的性能、功耗等等问题。所需要使用到的网站是&#xff1a; Perfetto UI 他的前身是Systrace&#xff0c;不过Pe…

分布式事务的八种方案解析

分布式事务的八种方案解析 针对不同的分布式场景业界常见的解决方案有2PC、TCC、可靠消息最终一致性、最大努力通知等方案&#xff0c;以下总结8 种常见的解决方案&#xff0c;帮助大家在实际的分布式系统中更好地运用事务。 1.2PC 二阶段提交协议&#xff08;Two-phase commit…

2024年旅游与经济发展国际会议(ICTED 2024)

2024年旅游与经济发展国际会议&#xff08;ICTED 2024&#xff09; 2024 International Conference on Tourism and Economic Development 【重要信息】 大会地点&#xff1a;青岛 大会官网&#xff1a;http://www.icicted.com 投稿邮箱&#xff1a;icictedsub-conf.com 【注意…

第一个Java程序

编写第一个Java程序通常从经典的"Hello,World!"程序开始。下面是一个简单的Java程序示例&#xff0c;它将打印出"Hello, World!"到控制台&#xff1a; 1.编写代码&#xff1a; 打开文本编辑器&#xff08;如记事本、Notepad、Visual StudioCode等&#x…

Oracle 学习之 各种语句

概览 Oracle 学习之 DDL 语句Oracle 学习之 DCL 语句Oracle 学习之 DML 语句Oracle 学习之 DTL 语句

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十五)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 23 - 24 节&#xff09; P23《22.Stage模型-基本概念》 一个应用可以有很多的能力&#xff0c;每个能力可以成为一个 Ability Mod…

微信小程序常用 API

微信小程序提供了丰富的 API&#xff0c;用于实现各种功能&#xff0c;如网络请求、数据缓存、地理位置获取、用户授权等。以下是微信小程序常用 API 的简介&#xff1a; 1. wx.request wx.request 用于发起 HTTP 网络请求&#xff0c;用于获取服务器数据。它支持 GET、POST、…

领域驱动设计(DDD)微服务架构模式总结

part1. Domain Driven Design(Strategic Design,Tactical Design) Top Down focus on business or activityy domain Ubiquitous Language:统一语言 Tactical Design Tools&#xff1a;战术性设计工具 Implementing Domain Driven Design(Event storming,DDD in code) DDD总结…