默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中
有数字、字母、下划线组成,不能以数字开头,用正则表达式描述为^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$。这大概是所有语言通用的规则,只不过PHP中变量名前要加上$
嗯,是吧,学习是一个积累的过程,一定要戒骄戒躁,不然可是会摔跤的。原归正传,今天说说PHP基础语法中的常量和变量。
本文介绍了 PHP 变量与常量。 官方文档:http://php.net/manual/zh/language.variables.php 官方文档:http://php.net/manual/zh/language.constants.php global 关键字 $GLOBALS 数组 静态变量 函数中的静态变量,函数执行完毕后,其值被保留。 可变变量 $a='hello'; $$a='world'; // 即 $hello='world'; 超全局变量 $GLOBALS $_SERVER 服务器和执
【常量】 可以用 define() 函数来定义常量,在 PHP 5.3.0 以后,可以使用 const 关键字在类定义之外定义常量。一个常量一旦被定义,就不能再改变或者取消定义。 常量只能包含标量数据(boolean,integer,float 和 string)。可以定义 resource 常量,但应尽量避免,因为会造成不可预料的结果。 可以简单的通过指定其名字来取得常量的值,与变量不同,不应该在常量前面加上 $ 符号。如果常量名是动态的,也可以用函数 constant() 来获取常量的值。用 get_defined_constants() 可以获得所有已定义的常量列表。 如果只想检查是否定义了某常量,用 defined() 函数。 常量和变量有如下不同: ◦ 常量前面没有美元符号($); ◦ 常量只能用 define() 函数定义,而不能通过赋值语句; ◦ 常量可以不用理会变量的作用域而在任何地方定义和访问; ◦ 常量一旦定义就不能被重新定义或者取消定义; ◦ 常量的值只能是标量。 预定义常量
在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组:
1.定义常量define("CONSTANT", "Hello world."); 常量只能包含标量数据(boolean,integer,float 和 string)。 调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT; 注: 常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。 2.普通变量$a = "hello"; 3.可变变量(使用两个美元符号($)) $$a = "world"; 两个变量都被定义了: $a 的内容是“hello”并且 $hello 的内容是“world”。 因此,可以表述为: echo "$a ${$a}";或者 echo "$a $hello";它们都会输出:hello world 要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。 4.静态变量 在函数内部static $a = 0; 注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error) 静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用 5.全局变量 在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组: 如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; 在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用 global $obj; 注:对于变量的 static 和 global 定义是以 应用 的方式实现的 6.给变量赋值:传地址赋值(简单引用): $bar = &$foo; //加&符号到将要赋值的变量前 改动新的变量将影响到原始变量,这种赋值操作更加快速 注意:只有命名变量才可以传地址赋值 注意:如果 $bar = &$a; $bar = &$foo; 改变$bar的值只能改变变量foo的值,而不改变a的值(引用/【技术点,其实还需要更多地实践】/改变了) 7.PHP 超全局变量$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量。该数组的键标为全局变量的 名称。从 PHP 3 开始存在 $GLOBALS 数组。 $_SERVER : 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联。类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用)。
将short_open_tag和asp_tags 都设置为ON,重启Apache服务器即可
PHP中若使用static关键字来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。
在函数内,变量的使用需要声明常量的作用域globay变量名(全局作用)local(局部)static(静态)
今天第一次接触到CMS的项目,当时是修改一个别人项目的BUG,说实话,我开始并不了解这是一个开源框架,我开始以为是一个别人字节写的自用框架,而非公共的开源框架。其实本人也写过微框架,本次就借助CMS来谈谈框架的思想。
PS:print_r() 函数用于打印变量,以更容易理解的形式展示。如果给出的是 string、integer 或 float 类型变量,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。
我们今天说一下 PHP 编程中,定义一个常量所使用的两种方法。有哪些区别,以及哪种是最佳实践?
本文总结了PHP 预定义变量、魔术常量和魔术方法。分享给大家供大家参考,具体如下:
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该 区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束(相反,而 auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执行过程中始终存在,但是在它作 用域之外不能使用。
PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物。 不过在PHP当中还是有着相当重要的意义。
常量是一个简单的标识符。在脚本执行期间该值不能改变(除了所谓的魔术常量,他们其实不是常量)。常量默认大小写敏感。通常常量标识符总是大写的。
续言 对于本次更新,我想说: 本框架由本人挑时间完善,而我还不是PHP大神级的人物,所以框架漏洞难免,求大神们指出。 本框架的知识点应用都会写在博客里,大家有什么异议的可以一起讨论,也希望看博客的也能
php变量类型松散,定义时变量一个类型,在之后可以赋予另一种类型的参数。 三种作用域:local、global、static global关键字用在函数内变量前表示声明以后使用的变量为全局变量。 static关键字用在函数内变量前表示该变量在函数执行完成后不销毁,且static关键字定义的变量赋予的仅是初始值,再次执行函数,不会执行定义中的赋值操作。
MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。MiniFramework 能够帮助开发者用最小的学习成本快速构建 Web 应用,在满足开发者最基础的分层开发、数据库和缓存访问等少量功能基础上,做到尽可能精简,以帮助您的应用基于框架高效运行。
命名的规则 加一个为私有的 加两个一般都是系统默认的,系统预定义的,即所谓: ===================== “魔术方法”与“魔术常量” ===================== ★PHP起止为双下划线的常量即为“魔术常量”:
1.1 autoload的使用;当在代码中使用一个未定义的类的时候,该函数就会被调用
本文以PHP语言为例来分析计算机中各段存储区的区别,代码段、堆空间段、代码段、初始化静态常量段。
本章主要介绍 PHP 的函数与对象的一些应用: <?php // PHP 函数与对象 print("test"); // 或 print "test"; echo(abs(5-8)); /
本文详细讲述了搭建自己的PHP MVC框架的方法。分享给大家供大家参考,具体如下: 前言 说到写PHP的MVC框架,大家想到的第一个词--“造轮子”,是的,一个还没有深厚功力的程序员,写出的PHP框架肯定不如那些出自大神们之手、经过时间和各种项目考验的框架。但我还是准备并且这么做了,主要是因为: 认为有关PHP的方方面面都了解了,但自己学习PHP的时间还短,基础并不扎实,很多常用函数的参数还偶尔要查手册,而且对于PHP的一些较新的特性如命名空间、反射等只是简单的看过,并没有能实际应用过。 PHP的知识多且杂,一个普通的项目往住是业务逻辑代码为主,而框架是一个能把这些知识点能融汇在一起的项目。 在自己写一个框架的时候,也会参考一些我使用过的框架如TP/CI/YII等的源码,在自己看源码时也能帮助自己理解框架,更容易接受以后要使用的框架。 所以说,这次造轮子的目的不是为了造轮子而是为了在造轮子的过程中熟悉其工艺,轮子特点,更好的使用轮子。 如果说写一个完整的PHP框架,那需要掌握的PHP知识点非常多,像设计模式、迭代器、事件与钩子等等,还有许多基础知识的灵活应用。我自认为这些还无法完全掌控,所以我的步骤是先自己搭建一个骨架,然后参考借鉴不同的PHP框架的特点,将其慢慢完善。因为工作原因,而且晚上还要补算法、网络等编程基础,PHP框架部分可能只有周末有时间更新,我会在进行框架功能更新之后,使用的知识点,更新博文。 首先放上框架的目前源码:GITHUB/zhenbianshu 或者点击此处本站下载。 框架整体 首先自己一下PHP的MVC框架的工作流程: 简单来说,它以一个入口文件来接受请求,选择路由,处理请求,返回结果。 当然,几句话完的东西实际上要做的工作很多,PHP框架会在每次接受请求时,定义常量,加载配置文件、基础类,根据访问的URL进行逻辑判断,选择对应的(模块)控制器和方法,并且自动加载对应类,处理完请求后,框架会选择并渲染对应的模板文件,以html页面的形式返回响应。在处理逻辑的时候,还要考虑到错误和异常的处理。 1、作为MVC框架,一定要有一个唯一的入口文件来统领全局,所有的访问请求都会首先进入这个入口文件,如我框架根目录的index.php,在里面,我定义了基本文件夹路径,当前环境,并根据当前环境定义错误报告的级别。 2、PHP中加载另外的文件,使用require和include,它们都是将目标文件内容加载到当前文件内,替换掉require或include语句,require是加载进来就执行,而include是加载进来在需要的时候执行,而它们的_once结构都是表示在写多次的时候只执行一次。 3、框架内的配置变量等使用专用的配置文件来保存,这里我仿照了TP里的数组返回法,用了一个compileConf()函数来解析数组,将数组的键定义为常量,值为数组的值。
php5.3不但引进了匿名函数还有更多更好多新的特性了,下面我们一起来了解一下PHP匿名函数与注意事项,具体内容如下
接口中所有的方法都是抽象的,没有程序体。 接口的方法必须被全部实现,否则将报错。
本文详细讲述了搭建自己的PHP MVC框架的方法。分享给大家供大家参考,具体如下:
*****************************************************************************************************************
一、能愿动词 MUST 必须 MUST NOT 一定不能 SHOULD 应该 SHOULD NOT 不应该 二、概览 文件必须(MUST)只用<?php或者<?=标签。 php代码必须使用UTF-8
本篇规范制定了代码基本元素的相关标准,以确保共享的 PHP 代码间具有较高程度的技术互通性。
因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣。本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征
一、PHP基本语法 PHP标记:一共有四种,只推荐使用第一种 语句结束符:分号 注释:行注释(// #)和块注释(/* */),注释的规范 二、常见的输出语句 print echo var_dump print_r printf 三、变量 变量的组成:变量名和变量值组成,变量名引用变量值 内存的组成:堆区、栈区、用户代码区,全局数据区(变量区、常量区、静态变量区),变量名在栈区,变量值是在变量区中 变量的基本语法:$ 变量的命名规则 可变变量:变量的名又可以用一个变量来代替 变量的基本操作 增:声明
也就C的内容,再追踪一些函数。全局搜索一下filt__,因为 filt 的英文意思为过滤,可以通过全局搜索这样式的函数来查看一下过滤规则。这种一般是比较快速审计。
const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问; private: 表示私有的,只有本类内部可以使用; protected: 表示受保护的,只有本类或子类或父类中可以访问; 定义常量也可用 define 定义。 const与define在定义常量时会有如下区别: const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义, const可在类中使用,define不能。 const定义的常量
性能是网站运行是否良好的关键因素, 网站的性能与效率影响着公司的运营成本及长远发展,编写出高质高效的代码是我们每个开发人员必备的素质,也是我们良好的职业素养。 一、变量(重要) 变量大小,注意变量大小是节约内存的最有效手段,对于来自用户表单、数据库和文件缓存的数据都需要控制变量的大小。 因为 cpu 要处理的数据是来源于内存 变量有效期,使用 unset()函数注销不需要的变量是一种良好的习惯,将一些不需要的变量立即注销可提高内存的使用率。 复制变量,尽量不要复制变量,否则就会带来 1 倍的内存消耗,即
$GLOBALS(超全局变量) — 引用全局作用域中可用的全部变量, 一个包含了全部变量的全局组合数组。变量的名字就是数组的键
类似JAVA,C++,PHP也有面向对象,关于类,对象。继承,封装…的概念也类似,所以这里直接来说明PHP面向对象的使用方法。
1.SAPI接口 PHP具体应用的编程接口。 2.开始和结束 PHP开始执行以后会经过两个主要的阶段: 处理请求之前的开始阶段和请求之后的结束阶段。 1.1开始阶段: 1.1.1 模块初始化阶段(MINT),只进行一次。 1.1.2 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数 1.2结束阶段(脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段) 1.2.1 停用模块(RSH
PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli 1.SAPI接口 PHP具体应用的编程接口。 2.开始和结束 PHP开始执行以后会经过两个主要的阶段: 处理请求之前的开始阶段和请求之后的结束阶段。 1.1开始阶段: 1.1.1 模块初始化阶段(MINT),只进行一次。 1.1.2 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数 1.2结束阶段(脚本执行到末尾或者通过调用exit(
php,基础,流程控制,函数,字符串,数组,web交互,mysql数据库,PHP数据库编程,cookie与session,日期和时间,图形图形处理,文件和目录处理,面向对象,pdo数据库抽象层,smarty模板。
1 字符串 1.1 少用正则表达式 能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。 没得说,正则最耗性能。 str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。 有没有你漏掉的好用的函数? 例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。 1.2 字符替换 如果需要转换的全是单个字符,用字符串作为 strtr() 函数完成
能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。
变量是几乎所有编程语言中最基本的组成元素。从本质上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。
前面写的都是运算符、流程控制、排序查找等,下面说一说面向对象的一些内容。这是前面写的,有兴趣可以去看一看。 PHP入门之类型与运算符 PHP入门之流程控制 PHP入门之函数 PHP入门之数组 PHP基础之排序 PHP基础之查找 接下来写一下关于面向对象的内容。
这是与命名空间有关的最后一篇。最后还是两个比较简单的内容,是关于命名空间和全局相关的一些类、函数、常量的使用对比。当然,最后我们还会总结一下命名空间的名称解析规则做为这三篇系列文章的结束。
领取专属 10元无门槛券
手把手带您无忧上云