php基础语法_面向对象

news2024/11/27 5:24:53

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.coloradmin.cn/o/1845322.html

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

相关文章

【PHP项目实战训练】——使用thinkphp框架对数据进行增删改查功能

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

【Effective Web】常见的css布局方式--三栏布局

常见的css居中方式–三栏布局 第一种实现&#xff1a;table布局&#xff08;不推荐&#xff09; 缺点&#xff1a;在table加载前&#xff0c;整个table都是空白的&#xff0c;且修改布局排版都十分困难 <table class"container"><td class"left"…

《广州化工》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《广州化工》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊 问&#xff1a;《广州化工》级别&#xff1f; 答&#xff1a;省级。主办单位&#xff1a;广州化工集团有限公司 主管单位&#xff1a;广州化工…

学生护眼大路灯应该怎么选?五款护眼大路灯对比推荐

我们都知道光线无处不在&#xff0c;想要减少近视隐患&#xff0c;就不得不提一下护眼灯了&#xff0c;特别是经常坐在电脑前码字的上班族以及深夜还在学习的学生党这一类人群&#xff0c;经常用眼光线不好不仅影响视力健康&#xff0c;还会影响效率。而一款护眼灯能够提供柔和…

环境配置02:CUDA安装

1. CUDA安装 Nvidia官网下载对应版本CUDA Toolkit CUDA Toolkit 12.1 Downloads | NVIDIA Developer CUDA Toolkit 12.5 Downloads | NVIDIA Developer 安装配置步骤参考&#xff1a;配置显卡cuda与配置pytorch - 知乎 (zhihu.com) 2. 根据CUDA版本&#xff0c;安装cudnn …

【node】启动本地打包文件的方式

前言 … 目标 1 初始化node文件 2 将打包文件通过node发布到本地 3 系列文件 【node】创建本地接口 一 node方式 1 在新建一个空的文件夹node 进入空文件夹在,文件夹的地址栏输入cmd回车,会自动跳转到命令行工具里 2 配置初始化文件 在命令行输入命令npm init,生成pac…

git 上拉下来的新项目web文件夹没有被idea管理,导致启动不了

让idea识别web项目&#xff0c;操作步骤&#xff1a; 1. 打开idea -- 文件 -- 项目结构&#xff1b; 2. 选择 模块 --- 添加 --- web -- 应用 --- 确定&#xff0c;就好了。 3. 文件夹中间出现个圆圈就是被识别到了。

vscode插件开发之 - TestController

TesController概要介绍 TestController 组件是用于实现自定义测试框架和集成测试结果的。它允许开发者定义自己的测试运行器&#xff0c;以支持在VSCode中运行和展示测试。以下是一些使用 TestController 组件的主要场景&#xff1a; 自定义测试框架&#xff1a;如果你正在开发…

如何通过自定义模块DIY出专属个性化的CSDN主页?一招教你搞定!

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;如何通过HTMLCSS自定义模板diy出自己的个性化csdn主页&#x…

学分制系统 GetCalendarContentById SQL注入致RCE漏洞复现

0x01 产品简介 学分制系统由上海鹏达计算机系统开发有限公司研发,是基于对职业教育特点和需求的深入理解,结合教育部相关文件精神,并广泛吸纳专家、学者意见而开发的一款综合性管理系统。系统采用模块化的设计方法,方便学校根据自身教学改革特点、信息化建设进程情况选择、…

使用 Java 构建和消费 RESTful 服务的基本方法

REST&#xff08;Representational State Transfer&#xff09;是一种架构风格&#xff0c;它基于Web标准和HTTP协议&#xff0c;常用于构建网络服务。使用Java构建和消费RESTful服务需要掌握一些基本概念和技术。 一、RESTful服务的基本概念 1. REST架构风格 REST架构风格的…

Linux系统资源监控nmon工具下载及使用介绍

一、资源下载 夸克网盘链接&#xff1a;https://pan.quark.cn/s/2684089bc34d 里面包含了各种分享的实用工具&#xff0c;nmon在 Linux服务器监控nmon工具 文件夹内 文件说明&#xff1a; nmon16p_binaries.tar.gz 为最新的nmon官方工具包&#xff0c;支持linux全平台 nmo…

酷开科技丨引领家庭娱乐新潮流,酷开系统带你开启多彩生活新篇章

在繁忙的都市生活节奏中&#xff0c;人们对生活品质的追求从未停歇。家庭娱乐作为提升生活质量的重要部分&#xff0c;随着科技进步和个性化需求的增长&#xff0c;已经发生了翻天覆地的变化。多样化的娱乐方式不仅为家庭生活增添了色彩&#xff0c;也为家庭成员间的相聚带来了…

selenium框架学习

概念 WEB自动化框架 三大组件: selenium IDE 浏览器插件,实现脚本录制WebDriver 实现对浏览器的各种操作(API包)Grid 实现同时对多个用例进行执行,用例在多个浏览器同步执行环境搭建 1、安装selenium: pip install selenium2、安装浏览器 3、安装浏览器驱动(对应的驱…

戴尔外星人原厂系统美版改国行正确识别本机SN,支持F12 Support Assist OS Recevory恢复重置识别SN服务编码

1.重新部署可以永久正确识别My Alienware和Support Assist服务编码 原厂系统远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f 2.安装有两个软件和官网主页会识别原机的SN码&#xff0c;就是本机服务编码&#xff08;my Alie…

【开发工具】git服务器端安装部署+客户端配置

自己安装一个轻量级的git服务端&#xff0c;仅仅作为代码维护&#xff0c;尤其适合个人代码管理。毕竟代码的版本管理是很有必要的。 这里把git服务端部署在centos系统里&#xff0c;部署完成后可以通过命令行推拉代码&#xff0c;进行版本和用户管理。 一、服务端安装配置 …

开源低代码平台,JeecgBoot v3.7.0 里程碑版本发布

项目介绍 JeecgBoot是一款企业级的低代码平台&#xff01;前后端分离架构 SpringBoot2.x&#xff0c;SpringCloud&#xff0c;Ant Design&Vue3&#xff0c;Mybatis-plus&#xff0c;Shiro&#xff0c;JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

RocketMQ快速入门:集成spring, springboot实现各类消息消费(七)附带源码

0. 引言 rocketmq支持两种消费模式&#xff1a;pull和push&#xff0c;在实际开发中这两种模式分别是如何实现的呢&#xff0c;在spring框架和springboot框架中集成有什么差异&#xff1f;今天我们一起来探究这两个问题。 1. java client实现消息消费 1、添加依赖 <depen…

React+TS前台项目实战(十三)-- 全局常用响应式加载动画Loading组件封装

文章目录 前言Loading组件1. 功能分析2. 代码详细注释3. 使用方式4. 不同尺寸loading动画效果展示 总结 前言 高阶组件有几大优点&#xff0c;其中一个就是渲染劫持&#xff0c;如懒加载&#xff0c;是否显示该元素loading&#xff0c;这在项目中我们经常用到。毫无疑问&#…

【原创】springboot+mysql员工工资管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…