关于PHP语言构造器介绍

PHP里有echo、print、die、require等几个特殊的关键字,虽然它们用起来像是函数,但实际上更类似于if、while这样控制语句,而不是一个函数。也就是说,当解释器遇到:

代码如下:

print 'Hello world';

这样的一个表达式的时候,并不会把它转换成函数调用,而是直接映射到一系列预先定义好的操作。使用语言构成的时候可以加括号,也可以不加括号,但是使用函数的时候必须加括号。

你提到的“可变函数”,英文是”variable function”,变量函数的意思,翻译成“可变函数”也有点扭曲原义,把variable(变量)这个名词按形容词(可变)的含义来翻译了。PHP里的Variable function是指如果在一个变量后面加上一对括号,那么解释器会试图寻找名字和这个变量的值一样的一个函数,如果找到了就执行它。例如,有一个函数foo(),那么可以用下面这种方式调用这个函数:

代码如下:

// 初始化一个字符串变量
$func = 'foo';

// 找到名字和这个字符串一样的函数,并且执行它
$func();

所以,你提到的这句话的含义就是,使用变量函数这种方式来调用一个语言构成是不允许的,例如下面这样:

代码如下:

$func = 'print';

// 这样做会产生异常,因为print不是一个函数,而是语言的构成部分
$func('hello world');

执行这段代码,会产生一个异常,函数print没有定义。

(0)

相关推荐

  • Thinkphp搭建包括JS多语言的多语言项目实现方法

    本文实例讲述了Thinkphp搭建包括JS多语言的多语言项目实现方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 项目需要开发英文版,于是需要搭建多语言项目. 项目使用Thinkphp框架,隐约记得Thinkphp有多语言设置,翻看了帮助手册,果然有,这就边实验边开始: 二.实现方法: Thinkphp采用app_begain来检测和切换语言包,语言包和项目相关,构架等都比较简单,具体的这里:http://www.thinkphp.cn/info/188.html 搭建好了,就可以使用

  • php实现获取及设置用户访问页面语言类

    本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考.具体分析如下: 该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language.根据用户选择的语言显示对应的页面(英文,简体中文,繁体中文) UserLang.class.php类文件如下: <?php /** User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language *

  • PHP检测用户语言的方法

    本文实例讲述了PHP检测用户语言的方法.分享给大家供大家参考.具体如下: function getPreferredLanguage() { $langs = array(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // break up string into pieces (languages and q factors) preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\

  • PHP实现检测客户端是否使用代理服务器及其匿名级别

    要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断. 具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器. 匿名级别可以参考下表来判断. 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一.没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP      HTTP_VIA = 没数值或不显示      HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用透明代理服务器的情况:

  • ThinkPHP多语言支持与多模板支持概述

    本文以实例形式简述了ThinkPHP的多语言支持与多模板支持.是ThinkPHP中非常重要的技巧,分享给大家供大家参考.具体如下: 一.ThinkPHP多语言支持: config.php配置文件中添加: //多语言支持设置 'LANG_SWITCH_ON'=>true, 'DEFAULT_LANG'=>'zh-cn', 'LANG_AUTO_DETECT'=>true, 'LANG_LIST'=>'en-us,zh-cn,zh-tw', Home/Lang/文件夹下建立三个文件夹,

  • PHP判断浏览器、判断语言代码分享

    PHP编程中经常需要用到一些服务器的一些资料,特把$_SERVER的详细参数整理下,方便以后使用. 判断浏览器类型 //判断类型 <?php if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 8.0")) echo "Internet Explorer 8.0"; else if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE 7.0&qu

  • 使用php判断浏览器的类型和语言的函数代码

    我们经常看到有一些网站上面会显示出你目前使用的浏览器类型和使用的语言,比如显示的是:您使用的浏览器为 IE6,繁体字.看起来是不是很炫. 其实这样的功能不难实现,无非就是判断浏览器的类型和语言,如果用JS来做应该很简单,这里我们看看用PHP来怎么实现这样的功能,既然是在做判断,就可以用PHP的条件语句if..else来判断实现. 判断浏览器类型: <?php echo $_SERVER["HTTP_USER_AGENT"]; ?> 判断浏览器语言: <?php ech

  • php实现TCP端口检测的方法

    本文实例讲述了php实现TCP端口检测的方法.分享给大家供大家参考.具体如下: 该程序可以确认当前端口是否可用: <?php class Health { public static $status; public function __construct() { } public function check($ip, $port){ $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_nonblock($sock)

  • 关于PHP语言构造器介绍

    PHP里有echo.print.die.require等几个特殊的关键字,虽然它们用起来像是函数,但实际上更类似于if.while这样控制语句,而不是一个函数.也就是说,当解释器遇到: 复制代码 代码如下: print 'Hello world'; 这样的一个表达式的时候,并不会把它转换成函数调用,而是直接映射到一系列预先定义好的操作.使用语言构成的时候可以加括号,也可以不加括号,但是使用函数的时候必须加括号. 你提到的"可变函数",英文是"variable function

  • C语言简明介绍常见关键字的用法

    目录 1.关键字 2.常见关键字 1.关键字 关键字是C语言提供的,不能自己创建关键字: 关键字不能用作变量名,eg:int char:这样的写法是不可取的. 2.常见关键字 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef

  • C语言简明介绍指针的使用

    目录 1. 指针类型 2. 野指针 3. 指针的运算 3.1 指针+-整数 3.2指针-指针 3.3 指针的关系运算 4. 指针数组 1. 指针类型 指针以字节为单位: 指针类型决定了解引用时能访问的空间的大小:也决定了指针的步长(指针+1走多远) 2. 野指针 指针未初始化 指针越界访问 指针指向的空间已释放 int* test() { int a = 10;//野指针 return &a; } int main(){ int* p = test(); //test函数里的a是局部变量,出函数

  • Springboot中动态语言groovy介绍

    目录 Groovy pom ResourceScriptSource DatabaseScriptSource Groovy Groovy是一种基于Java的语法的基于JVM的编程语言.Groovy支持动态输入,闭包,元编程,运算符重载等等语法.除此之外,Groovy还提供了许多类似脚本语言的功能,比如,多行字符串,字符串插值,优雅的循环结构和简单的属性访问.另外,结尾分号是可选的.而这些都有足够的理帮助开发人员为了提高开发效率. 换句话说,Groovy就是一种继承了动态语言的优良特性并运行在J

  • C语言常量介绍

    目录 什么是常量 常量都有哪些 这四种常量的特点.注意事项等等 1.字面常量: 2.const修饰的常变量 3.#define定义的标识符常量 4.枚举常量 总结 什么是常量 从字面上简单解释就是不变的量叫常量 常量都有哪些 字面常量 const修饰的常变量 #define定义的标识符常量 枚举常量enum 这四种常量的特点.注意事项等等 1.字面常量: 字面常量就是直接写出来的量: 有字符.数字.字符串等字面常量: 2.const修饰的常变量 开门见山:被const修饰的变量就不能在改变了,具

  • C语言中各种操作符的详细介绍(纯干货!)

    目录 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 (类型)   强制类型转换 条件操作符 总结 算术操作符 主要是 ( +   -   *   /    %) 五种算数操作符. 1.除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数. 2. 对于 / 操作符如果两个操作数都为整数,执行整数除法.而只要有浮点数执行的就是浮点数除 法. 3..% 操作符的两个操作数必须为整数.返回的是整除之后的余数. 当除数为小数时,int类型只会截取整数部分. 移位操作符 << 左移操作

  • 什么是Perl?编程语言Perl详细介绍

    Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表.Perl借取了C.sed.awk.shell scripting以及很多其他程序语言的特性.Larry Wall在新闻组comp.sources.misc发布了Perl脚本语言1.0版,当时他是Unisys公司的一名程序员.Perl借鉴了sh.Awk和Sed等脚本语言的特性,试图成为一个能简化报告处理的通用 Unix脚本语言. Perl 2在1988年发布,增加了更多特性,拥有更好的正则表达式引擎.Per

  • Android进程间通信(IPC)机制Binder简要介绍

    在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中.那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了. 我们知道,Android系统是基于Linux内核的,而Linux内核继承和兼容了丰富的Unix系统进程间通信(IPC)机制.有传统的管道(Pipe).信号(Signal)和跟踪(Trace),这三项

  • Go语言实现遗传算法的实例代码

    在没介绍正文之前先给大家补充点go语言基本知识及实例. Go 语言教程 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本.现在Go的开发已经是完全开放的,并且拥有一个活跃的社区. Go 语言特色 简洁.快速.安全 并行.有

  • Python如何快速上手? 快速掌握一门新语言的方法

    那么Python如何快速上手?找来了一篇广受好评的新语言学习方法介绍,供大家参考. 听说,你决定要为你的 "技能树" 再添加一门特定的编程语言.那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术的建议.记住每个人学习的方式都不一样.其中一些可能对你十分有用,而其他的则可能无法满足你的需求.如果你开始担心一个策略,请尝试另一个策略并看看它哪里适合你. 1. 将其与类似的语言进行比较.当你首次观看有关该语言的第一个教程或阅读代码时,请尝试猜测该语言的每个部分将会做什么,并检查你

随机推荐