PHP学习之一:PHP脚本、类型和变量

ESP32 S3学习记录-USB虚拟串口通信功(九) 串口通信,顾名思义,就是串行通信的一种。数据位(0和1)像排队一样,一个接一个地在一条数据线上进行传输。作为对比,并行通信是多个数据位(比如8个)在多条数据线上同时传输。可以把它想象成一条单行道的马路(串行)和一条八车道的高速公路(并行)。在短距离、低速的情况下,并行更快,但随着距离变长、速度变快,多条线路之间的同步会变得非常困难,成本也高。因此,现在长距离、高速度的通信(如USB、PCIe、SATA)本质上都是先进的串行通信。我们通常所说的“串口”,特指的是一种异步串行通信方式。 阅读详情
    PHP是作为一种为网站后台开发而设计的语言,在新版本5.3之后加入了越来越多的面向对象的内容,个人也渐渐看好这门语言,最近进行了一些学习,把一些要点记录下来,方便以后回顾。

    PHP的文档内容主要分为三部分:基本语言介绍、库函数说明、特性说明。其中基本语言介绍是基础部分,介绍了PHP语言的基本语法、类型、变量、运算符、流程控制、函数、类、命名空间等。库函数说明部分主要介绍了相关的PHP扩展函数库的内容。特性部分介绍了相关的web开发的内容如请求、会话、数据库连接等内容。其中第一部分是本系列文章的主要内容。

    整体上来说,PHP在语法和语义方面和C或JAVA有许多类似的地方,只有少数地方有所区别。

    本篇先记录一下PHP的基本使用、变量和类型。

    1 如何运行一个PHP脚本

   

<?php
echo "Hello world"; //输出hello world
?>


    PHP解释器需要查找<?php  ?>标记来解释相应的PHP脚本的开始和结束,对于不在标记中的内容PHP解释器会直接进行输出,一直到遇到下一个开始标记之前。如果整个文件都属于单个的开始和结束标记,则文件尾部的结束标记可以省略。

     上面这个脚本可以命令行上执行,root@localhost# php hello.php。我们即可以看到输出。

     PHP中的注释和C是一样的,支持单行注释 // 和多行注释 /* */ 。此外还支持unix shell风格的注释,#注释。

     2 PHP支持的类型

     PHP支持8种内置类型:bool int float string array object resource callable NULL

     此外还有三种伪类型:mixed number callback

     前4种内置类型不需要做额外说明,array支持线性和hash方式的存储与使用,数组使用时可以直接按位置来存储和访问。

     object类型是通过new生成的类的实例。resource为PHP存储的外部资源的句柄,可以通过get_resource_type来查看相应的资源类型。callable可以理解为函数。

     三种伪类型只用于文档中对函数对数进行说明,mixed表示类型不固守、number表示int或float、callback表示回调函数类型。

     对于不同的类型PHP定义了is_int,is_string之类的类型判断符,get_type()以及set_type()等用于获取变量的类型。

     不同的类型可以进行类型转换,转换有两种方式,一种为操作符,一种为函数。类型$a = (int) 132.3或$a = intval(132.3)    

  • (int), (integer) - cast to integer
  • (bool), (boolean) - cast to boolean
  • (float), (double), (real) - cast to float
  • (string) - cast to string
  • (array) - cast to array
  • (object) - cast to object
  • (unset) - cast to NULL (PHP 5)
     3  PHP的变量

     3.1 变量使用

     在定义前不需要声明,也不需要指定类型,变量由$符号开头。变量命名规则与C类似。变量名为大小写敏感的。

     3.2 变量作用型类型

     PHP的作用域有4种,全局、局部、静态、形参。

     全局作用域的变量不在任务函数体中声明,非静态的变量。

     局部变量声明于函数体内。形参变量声明于函数声明中。

     若变量声明于include或require语句之前,则变量在被包含文件中可见。

     值得注意的是PHP的全局作用域与C的作用域规则不同,PHP的全局作用域并不能作用于局部作用域中,若在局部需要引用全局变量,必须在局部作用域对全局变量进行声明。如下所示,对于全局变量$a并不能在函数test()中被访问到。若想使用则采用global $a声明。

    

<?php
$a = 1; /* global scope */ 

function test()
{ 
    echo $a; /* reference to local scope variable */ 
} 

test();
?>

 

    3.3 外部变量

    对于从HTML里提交的变量可以通过超级全局变量进行访问。

    3.4 超级全局变量

    PHP定义了若干个超级全局变量,用于方便web开发。如下所示:

  • $GLOBALS 
  • $_SERVER    : 描述web服务器以及客户端等的配置信息
  • $_GET            : 客户端的GET请求数据
  • $_POST         : 客户端的POST请求数据
  • $_FILES        : 客户端上传文件数据
  • $_COOKIE    : 客户端COOKIE数据
  • $_SESSION  : 客户端Session数据
  • $_REQUEST : GET/POST的别名
  • $_ENV           :环境信息

    4 常量

    4.1 全局常量

     define("PI", 3.1415926);
     echo PI;
     常量是全局可见的。

    4.2 类常量   

   
class Test
{
    const MATH_PI = 3.1415926;
    //...
}


    4.3 魔法常量

   

NameDescription
__LINE__The current line number of the file.
__FILE__The full path and filename of the file. If used inside an include, the name of the included file is returned. Since PHP 4.0.2,__FILE__ always contains an absolute path with symlinks resolved whereas in older versions it contained relative path under some circumstances.
__DIR__The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent todirname(__FILE__). This directory name does not have a trailing slash unless it is the root directory. (Added in PHP 5.3.0.)
__FUNCTION__The function name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the function name as it was declared (case-sensitive). In PHP 4 its value is always lowercased.
__CLASS__The class name. (Added in PHP 4.3.0) As of PHP 5 this constant returns the class name as it was declared (case-sensitive). In PHP 4 its value is always lowercased. The class name includes the namespace it was declared in (e.g.Foo\Bar). Note that as of PHP 5.4 __CLASS__ works also in traits. When used in a trait method, __CLASS__ is the name of the class the trait is used in.
__TRAIT__The trait name. (Added in PHP 5.4.0) As of PHP 5.4 this constant returns the trait as it was declared (case-sensitive). The trait name includes the namespace it was declared in (e.g.Foo\Bar).
__METHOD__The class method name. (Added in PHP 5.0.0) The method name is returned as it was declared (case-sensitive).
__NAMESPACE__The name of the current namespace (case-sensitive). This constant is defined in compile-time (Added in PHP 5.3.0).

虚拟串口VSPD 调串口 UART 主从通信经常串口助手和今天要分享的虚拟串口工具,主要是用来找问题的,毕竟通信这事,有一点问题也是出不来的。多一个工具就多一个查找问题的方法,做设计调程序的过程就是解决问题的过程,问题解决了自然就成功了。VSPD是什么?1、多个虚拟串口映射;2、收 / 发多线程架构发多线程架构;3、支持虚拟串口参数同步指令支持虚拟串口参数同步指令;4、自动错误纠正、自动连接、自动重新试自动错误纠正、自动连接、自动重新试;5、实时虚拟串口数据传输监控实时虚拟串口数据传输监控; 阅读详情

相关推荐

基于socat的虚拟串口通信实战指南

本文提供了一份基于socat工具创建和使用虚拟串口的实战指南。详细介绍了socat的安装、虚拟串口对的创建方法,并分别通过Python和C++示例代码演示了如何进行串口通信测试与程序调试,帮助开发者在无硬件依赖的环境下高效验证通信逻辑。

assembly8low的博客 707

STM32 -- USB虚拟串口通信

USB(Universal Serial Bus)即通用串行总线,是一种应用广泛的外部总线标准。它具有高速、可靠、支持热插拔等优点。USB通信基于主机 - 设备架构,主机(通常是计算机)负责管理和控制USB总线上的设备。通过以上步骤,我们可以实现基于STM32的USB虚拟串口通信。在实际应用中,可以根据需求对代码进行扩展,实现更复杂的数据处理和通信功能。同时,需要注意USB通信的稳定性和兼容性,确保在不同的主机环境下都能正常工作。以上代码仅为示例,实际开发中可能需要根据具体的硬件平台和需求进行调整。

duierrorshuobu的博客 2740

虚拟串口以及在Proteus中的使用

[复制链接] 以下以一个简单的例子为例虚拟串口是计算机通过软件模拟的串口,当其它设计软件使用到串口的时候,可以通过调用虚拟串口仿真模拟,以查看所设计的正确性。首先要安装虚拟串口设置的软件,网上有很多设置虚拟串口的软件,我用的是VSPD,可试用1个月,试用期过后,该软件将不能使用,但不用担心,所设置的虚拟串口不会消失,可以继续使用。VSP...

weixin_34417183的博客 2381

Windows下USB虚拟串口驱动:让嵌入式设备与Windows轻松通信

Windows下USB虚拟串口驱动:让嵌入式设备与Windows轻松通信 【下载地址】Windows下USB虚拟串口驱动 Windows下USB虚拟串口驱动usbser.sys,专为嵌入式设备设计,支持USB/gadget的serial模式,将其虚拟为串口与Windows系统通信。该驱动适用于Windows操作系统,安装...

gitblog_06752的博客 1106

PC与MCU通信方案:USB CDC虚拟串口全面讲解

深入解析如何利用USB CDC技术实现PC与MCU间的高效通信,重点讲解虚拟串口的原理与配置流程,帮助开发者快速搭建稳定可靠的嵌入式通信方案。

weixin_42515842的博客 1074

虚拟串口软件与真实串口协同通信:项目应用

在工业通信项目中,利用虚拟串口软件模拟串口设备,实现与真实串口的高效数据交互。该方案提升了系统调试效率,增强了设备兼容性,为复杂环境下的串口通信提供了灵活解决方案。

weixin_42437253的博客 931

从零实现虚拟串口通信:基础配置手把手教学

想实现串口通信却缺少硬件?通过虚拟串口软件轻松模拟串口设备,本文详解从零开始的配置步骤,帮助开发者快速上手调试与测试,提升开发效率。

weixin_35592186的博客 1035

虚拟串口软件设计与模拟通信实战

虚拟串口软件在现代软件开发与设备调试中扮演着极其重要的角色,尤其在无法直接连接物理串口设备的场景中。它通过模拟串口通信的行为,使开发人员能够在没有实际硬件的情况下进行通信协议的测试、驱动程序的调试以及串口应用的开发。本章将系统介绍虚拟串口软件的定义与核心价值,对比分析主流工具的功能特性,并提出科学的选型标准与推荐方案,为后续章节的配置与应用打下坚实基础。虚拟串口软件是一种能够在操作系统层面模拟真实串口行为的工具,它通过创建一对或多对虚拟COM端口,使得应用程序可以像操作物理串口一样进行数据收发。

weixin_35835030的博客 1059

虚拟串口连接配置实战案例:模拟串口通信场景

通过实际案例演示如何配置虚拟串口,实现高效的串口通信模拟。掌握虚拟串口的创建与联调方法,适用于开发测试及物联网应用中的虚拟串口需求。

weixin_42609225的博客 944

VSPD虚拟串口通信与调试工具实战详解

串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于工业控制、嵌入式系统和物联网设备中。其核心在于通过有限的物理引脚(如TXD发送、RXD接收、GND地线)实现设备间可靠的数据交换。相较于并行通信,串口通信具有布线简单、抗干扰能力强和传输距离远等优势。常见的串口标准包括RS-232、RS-485和TTL电平通信,它们在电气特性和通信距离上各有差异。理解串口通信的基本原理和参数设置,是进行后续虚拟串口配置、调试与协议分析的基础。

weixin_35903223的博客 1483

打造灵活的虚拟串口通信环境:VSPD工具实战指南

虚拟串口工具是一种软件程序,它能够在计算机内部模拟真实的硬件串口,使得计算机能够像连接物理串口设备一样,与其他软件或设备进行串行通信。这类工具对于测试、开发和解决硬件冲突问题等方面尤其有用。在现代IT行业中,随着物联网、远程监控和控制技术的发展,对虚拟串口工具的需求日益增长。它们允许开发者在没有物理设备的情况下进行通信协议的测试和调试,或者在虚拟环境中模拟硬件串口,避免了对硬件的实际操作,这使得开发和测试过程更加高效和灵活。

weixin_30205153的博客 1700

STM32虚拟串口实现原理:一文说清通信机制

深入剖析STM32实现虚拟串口的核心原理,详解USB与UART的转换逻辑,帮助开发者掌握虚拟串口在嵌入式通信中的实际应用与调试技巧。

weixin_34945060的博客 1189

STM32 USB虚拟串口驱动与通信实战指南

随着嵌入式系统与上位机通信需求的不断升级,传统的UART接口因受限于电平标准、传输速率及连接复杂度,已难以满足现代开发对高效、即插即用通信方式的需求。STM32系列微控制器通过集成全速USB外设,支持实现基于USB CDC(Communication Device Class)协议的虚拟串口通信(Virtual COM Port, VCP),使设备在无需外部串口芯片的情况下,直接通过USB接口模拟标准串行端口。该技术的核心优势在于:免驱动设计。

weixin_33597080的博客 1005

探索高效通信:STM32 USB虚拟串口驱动推荐

探索高效通信:STM32 USB虚拟串口驱动推荐 【下载地址】USB虚拟串口驱动STM32 本仓库提供了一款专为STM32微控制器设计的USB虚拟串口驱动程序。STM32系列微控制器广泛应用于嵌入式系统开发,其支持USB功能使得设备能够通过USB接口与计算机进行便捷的数据交换。虚拟串口技术将USB通信模拟成传统的串行端口...

gitblog_09721的博客 1027

虚拟串口驱动详解与应用实践指南

在数字通信领域中,串口(或称为串行端口)是一种使用串行通信协议的I/O接口。虚拟串口驱动则是一种软件,通过它可以在计算机系统中模拟出额外的串口设备。这样的驱动程序对于那些需要多串口连接,但物理端口有限的场景特别有用。虚拟串口驱动可以实现多个虚拟串口,它们在操作系统中与真实的串口一样被识别和使用。STM32是意法半导体(STMicroelectronics)生产的一系列32位ARM Cortex-M微控制器产品系列。

weixin_35794316的博客 1699

瑞芯微RK3568开发板实战:Android11系统parameter.txt文件配置全解析(附常见问题排查)

本文深入解析了瑞芯微RK3568开发板在Android 11系统下parameter.txt文件的配置要点与实战技巧。作为BootLoader启动阶段的核心蓝图,该文件决定了硬件初始化、分区布局及电源管理。文章详细拆解了身份标识、GPIO控制(PWR_HLD)、命令行参数及分区表等关键字段的配置逻辑,并针对RK3568平台与Android 11特性提供了专项适配策略,最后附带了启动失败、分区异常等常见问题的深度排查方法。

php55的博客 895

STM32F103USB虚拟串口通信资源下载:实现高效的设备通信

STM32F103USB虚拟串口通信资源下载:实现高效的设备通信 去发现同类优质开源项目:https://gitcode.com/ 在嵌入式系统开发中,STM32F103USB虚拟串口通信资源下载是一个极具实用性的项目,它通过一根USB线即可完成设备的供电和通信任务。以下是该项目详细介绍,旨在帮助开发者更好地理解和运用这一资源。 项目介绍 STM32F103USB虚拟串口通信资源下载是一个开源项目...

gitblog_06752的博客 1023

别再死磕NFP了!用Python+遗传算法搞定异形件自动排版(附完整代码)

本文介绍了如何利用Python和遗传算法实现异形件智能排版,解决传统NFP方法计算复杂的问题。通过Shapely库处理几何运算和DEAP库搭建遗传算法框架,结合模拟退火策略避免局部最优,显著提升材料利用率。附完整代码和优化技巧,适用于服装裁剪、金属加工等行业。

weixin_26965807的博客 235

【亲测免费】 虚拟串口工具VSPD:简化串口通信开发的利器

虚拟串口工具VSPD:简化串口通信开发的利器 【下载地址】虚拟串口VSPD-V11.0.1047.0.exe下载仓库 本仓库提供了一个资源文件的下载,该文件为虚拟串口工具 `VSPD-V11.0.1047.0.exe`。虚拟串口工具可以帮助用户在计算机上创建虚拟的串口对,方便进行串口通信的开发和测试 ...

gitblog_09732的博客 1260

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

IEC61850建模实战:从标准解读到ICD文件生成

本文详细介绍了IEC61850建模的实战过程,从标准解读到ICD文件生成,涵盖了变电站自动化系统的结构化数据模型设计。通过分层结构、标准服务映射和XML文件解析,帮助读者掌握电力系统智能电子设备的标准化建模方法,提升工程实施效率。

weixin_30823001的博客 414

C WinForm虚拟串口通信:高效便捷的串口通信解决方案

C# WinForm虚拟串口通信:高效便捷的串口通信解决方案 【下载地址】CWinForm虚拟串口通信 本项目提供了一个基于C# WinForm的虚拟串口通信解决方案。通过利用虚拟串口工具生成虚拟串口,实现了串口之间的相互通信,支持字符形式与16进制的发送与接收。 ...

gitblog_09805的博客 535

【LAMMPS学习】八、基础知识(2.1)2D模拟

此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。LAMMPS 源代码分发的examples目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。

荷塘阅色 1249
上一篇: 程序员的思维修炼-开发认知潜能的九堂课之思维导图
下一篇: PHP学习之二:运算符与流程控制
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值