在PHP中所有的函数都有返回值——即使你没有指定它返回内容。因此在PHP中声名”void”(无返回值)的函数没有意义。你可以使用return关键字来指定要返回的内容:
function hello()
{
return "Hello World"; // 没有任何显示结果
}
$txt = hello(); // 将返回的“Hello World”值赋给$txt
echo hello(); // 显示“Hello World”
显然,return也可用于中断一个函数的运行,即使你没有打算返回任何值:
function hello($who)
{
echo "Hello $who";
if ($who == "World") {
return; // 执行到这里的话,本函数下面的语句就不会被执行到
}
echo ", how are you";
}
hello("World"); // 显示“Hello World”
hello("Siemen"); // 显示“Hello Siemen, how are you?”
请注意,即使你没有在return后面加上需要返回的内容,PHP仍然会触发函数返回NULL。
函数也可以返回一个引用;这可以使返回值是其本身的引用,来取代复制关系(默认的返回值除了对象外其余都是复制关系)。比较典型的例子是资源类型(类似数据库连接)与使用工厂模式。但要注意的是——你只能返回一个值作为引用,而不是一个表达式,或者强制使用return语句返回NULL:
function &query($sql)
{
$result = mysql_query($sql);
return $result;
}
// 下面是不正确的写法,会引发PHP的提示
function &getHello()
{
return "Hello World";
}
// 同样是不正确的写法,这样写会引发一个警告
function &test()
{
echo "This is a test";
}函数的语法非常简单。创建一个新的函数,我们只要使用function关键字,后面跟上一个识别名称,一对圆括号与一对花括弧:
function hello()
{
echo "Hello World!";
}
hello(); // 显示 "Hello World!";
PHP的函数名不区分大小写且只能由字母、数字和下划线组成。注意不能以数字开头。
想要让你编写的函数去执行的话,只要把你要执行的代码写在花括弧中间,然后去掉用它。
function hello()
{
echo "Hello World!";
}
hello(); // 显示 "Hello World!";
可以这么说,函数是PHP程序的心脏。被函数封装的每一段代码可在任何地方反复调用其价值不可估量——它是构造程序和面向对象开发的基石。
在本章中,我们的焦点放在创建于管理函数——因此,本章着重讲解如果写函数,而不是如何使用。
目录放出:
本章涵盖了很多PHP应用开发的要点。简单来说,这些知识是开发的基本要素,因此你必须非常熟悉他们的能力和特殊需要。
有很多基本的知识点我们也只是略微了解:数组、字符串、函数和对象。他们复杂到足以使用整个章节去分别介绍他们,因此,以下四个章节就详细介绍他们。
错误是每一门计算机语言不可缺少的部分——尽管他领程序员生厌!
PHP拥有一些令人激动的除虫工具——细致精准的错误抛出、错误句柄与错误报告。合理的利用错误管理可以写出稳定的和有检测已知问题能力的应用,然后通过优雅的方式处理他们。
作者提示:本章我们只介绍传统的程序错误管理。PHP 5中面向对象的错误管理会在面向对象开发章节中详细介绍。
流程控制允许你控制你编写的脚本流(Siemen注:通俗点说就是按照你的安排去执行程序)——毕竟,一个脚本从开始一直运行到结束,你没有控制其运行走向与运行多少次数,那么程序也不会知道下一步该怎么做。
PHP提供了一些与与众不同的流程控制——包括一些看似多余,确实对简化开发的。你应该要熟悉他们,把他们当作语言结构不可分割的部分。
本节名称暗示,操作符促进操作。PHP中有很多种操作符,常用的有:
PHP同时提供了其他操作符:
作者提示:有极少数情况,PHP的操作符是二元操作符——需要两个操作数,所有的二元操作符都是夹在两个操作数中间(如,2 + 2)。
与变量相反,常量是不可以被改变的值。常量在脚本中可以被全局访问,只能存放标量。常量在命名上与变量类似,区分大小写,且需要一个名称识别,不要附带$。为了识别方便,常量名称通常全大写:
define('EMAIL', 'm@liuphp.com'); // 正确的常量申明
echo EMAIL; // 显示 'm@liuphp.com'
define('USE_XML', true);
if (USE_XML) {} // 判断真假
define('1CONSTANT', 'some value'); // 错误的常量申明
变量是临时的存储容器。在PHP中,一个变量可以存放任何类型的数据,比如字符型、整形、浮点型、对象和数组。PHP对于变量的数据类型是松散型的,这就意味着变量中的数据类型会在需要时自动转换成其他类型,使程序正常运行下去。相对于一些强类型语言,比如C和JAVA,变量只能存放其事先定义好的数据。
当看到$符号开头的便是PHP的变量,其符号后面跟随变量的名称。变量名称必须由字母、数字和下划线组成,不能以数字开头,且区分大小写(这点会在后续章节中介绍)。例如:
$name = 'valid'; // 正确的写法 $_name = 'valid'; // 正确的写法 $1name = 'invalid' // 错误的写法, 以数字开头
作者提示:变量也可以被穿插使用——即你可以把变量插入到字符型变量中。这个会在字符串章节详细介绍。