软件工程师手册/语言词典/PHP
PHP,代表“PHP:超文本预处理器”,是一种开源脚本语言。它可以嵌入到 HTML 中,类似于 JSP 的工作方式。
PHP 的分类有点困难。创建者将其定义为一种 web 开发脚本语言,而它确实也是。虽然它主要以过程式为主,但也逐渐转向面向对象语言(PHP 5)。所以,PHP 实际上可以是你想要它成为的样子。需要注意的是,它是一种解释型语言,可以被编译成一些东西。 PHP.net 的介绍页面
PHP 通常通过 web 服务器访问,处理包含一些 php 代码的 html 页面,或是一个 php 文件。
在 html 文件中
<html>
<body>
Hello World! <br>
Today is
<?
$date = date('D M dS');
echo $date;
?>
</body>
</html>
或者你可以通过将整个文件包含在 <? 和 ?> 之间来创建一个完整的 php 文件。一般的趋势是将这些文件命名为 .php 文件,用于渲染 html 等内容的文件,以及 .inc 文件,用于库文件。
变量前面包含一个 '$',并且不需要声明。行末以分号结尾,与 C 语言类似。与大多数 web 开发脚本语言一样,也有一些全局变量,例如 $_SESSION 和 $_POST、$_GET 以及 $_REQUEST。
一个通用的赋值方式如下所示
$a = 'bar';
$b = 4;
// this is an inline comment. Everything after the // is a comment.
块注释由起始的 /* 和结束的 */ 指定,可以跨越多行。
/*
* this is a block comment
*/
PHP 包含 phpdoc - 可以在函数声明之前的注释中创建 html 手册。它们看起来像这样
/**
* Function description
*
* @param <datatype> <$name of var> <description of var>
*
* @return <datatype>
*/
这里还可以使用一些其他的 @ 类型。需要生成 phpdoc 的来源。更多内容将陆续推出。
声明 i 为一个整数
$i = 1;
或者
$str = 'string';
不需要声明数据类型,所以可以通过将其赋值给其他内容来改变变量的数据类型
$foo = 1; $foo = 'string';
这里的一个障碍是,你需要知道如何连接字符串以及添加值。
要连接字符串,可以使用 "." 或 ".="。如果你想添加值,则使用 "+" 或 "+="。
如果你这样做
$foo = 'string'; $foo += ' is cool';
你将得到一个数字而不是 "string is cool",因为你添加的是字符串,而不是连接字符串。
函数声明
function foo( $param1, $param2 ) {
return 'hello';
}
你可以像这样设置默认参数
function foo( $param1, $param2=100 ) {
return 'hello';
}
你不需要声明任何返回值。
当你在类中声明一个函数时,它看起来与上面显示的相同,唯一的区别是它的物理位置在类边界内。
class Foo {
function bar () {
return 'something';
}
}
所有变量在 PHP 中只有一个作用域。如果它在函数中,则它具有局部作用域。如果它在函数之外,则它具有全局作用域。
你可以通过两种方式创建全局变量。第一种方法是在函数之外放置它。第二种方法是使用这种方式声明它
global $foo;
这使得它可以在任何地方访问。
要在函数内部访问全局值,你需要声明你正在使用它,否则 php 会认为它与全局变量完全不同。
YES
$foo = 2;
function foo() {
global $foo;
$bar = 1;
return $foo + $bar;
}
NO
$foo = 3;
function foo() {
$bar = 1;
return $foo + $bar;
}
PHP 将在函数内部创建 $foo,并且不会将其与全局 $foo 关联起来。“NO”示例中的两个 $foo 是完全不同的实体。
$bar 是局部变量,其作用域仅限于该函数。
PHP 有关于作用域的优秀 文档 可供使用。
有典型的 if/else 语句
if( $a == $b ) {
$c = $d;
// can put more statements here
} else if ( $b == $c ) {
$c = $e;
// can put more statements here
} else {
$c = $f;
// can put more statements here
}
只要条件之后只有一条语句,就可以删除大括号
if( $a == $b )
$c = $d; // only one statement allowed
else
$c = $f; // only one statement allowed
另一种有效的 if 语句编写方式如下所示
$bar = (($foo == true) ? 'test' : 'not test');
前两种更易于阅读。
还有 case/switch 条件语句
switch ($foo) {
case 'foo':
echo 'bar';
break;// breaks out of the switch case, to prevent us from running
// the stuff below this.
case 'bar':
echo 'foo';
break; // breaks out of the switch case, to prevent us from running
// the stuff below this.
default:
echo 'empty';
}
请访问 php 的结构页面 以获取更多信息以及条件语句的其他编写方式。
PHP 包含传统的循环 - for 循环、while 循环和 do while 循环。还有一个 foreach 循环。
For
// prints out the numbers from 0 to 4, as soon as $i equals 5 it stops.
for(
echo $i;
}
PHP 有一个特殊的 foreach 循环,用于处理数组
foreach( $fooArray as $key=>$value ) {
// starting at the begining of the array it will give the key (index)
// and value for each item.
}
// you can also just say:
foreach( $fooArray as $value ) {
// you don't need to use $key
}
While
// this counts backwards from 100 printing out each number like this
// "100...99...98..." and so on until it reaches 0, then stops
$i = 100;
while( $i > 0 ) {
echo "$i...";
$i--;
}
or
// keeps checking the $cond variable and stops when it equals false
// if $cond == false from the start, the stuff in the loop will never execute.
while( $cond != true ) {
// do something
}
Do while
// this does the same thing as the above "for" loop, only it always executes
// at least once before it checks if the condition ($i <5) has been met,
// or is still good.
$i = 0;
do {
$i++
echo "$i...";
while( $i < 5 );
请访问 php 的循环页面 以获取更多关于循环以及其他编写方式的信息。
以下是如何在 PHP 中打印出“Hello World!”。
echo 'Hello World!';
当你想在字符串中包含 PHP 变量时,你需要使用双引号,因为 PHP 不会解析单引号之间的數據,它只会将其打印出来。
$foo = 'bar'; echo "foo$foo";
// prints out foobar;
当字符串中没有变量时,最好使用单引号,因为它可以节省处理时间。
<描述错误处理和恢复。根据需要提供示例。>
PHP 使用数组作为原生数据类型。
// example 1
$ages = array();
$ages['Bobby'] = 12;
$ages['Rob'] = 12;
// example 2
$foo = array();
$foo[0] = 8;
$foo[1] = 9;
$foo[] = 10; // puts 10 in $foo[2]
// example 3
$bar[0] = 12; // don't need to specifically declare $bar, it's just nice to.
$bar['total'] = 3;
$bar[] = 13; // put's 13 in $bar[1]
PHP 中的数组非常强大且实用。它们可以像哈希表一样使用,如第一个和第三个示例中所示 - 您可以使用索引和字符串访问数组。您不需要显式声明数组,虽然这是一个好习惯。此外,您也可以像示例 2 中一样,只写两个方括号,例如 $foo[],表示您希望将数据插入到下一个索引中。
<列出该语言本机提供的算法或算法列表的参考。列出在语言中没有提供算法的情况下如何合并算法。或者,如果不可用,请描述一下。>
<描述垃圾回收是自动的还是手动的。>
<描述文件、库和部分通常如何划分和排列。>
<请包含从其他语言切换到这种语言更容易的提示。>
有一个很棒的 PHP 库在 php.net。这里有手册以及库页面 - 所以对于任何有一定编程经验的用户来说都很合适。您肯定需要此页面作为库的参考。
<列出可能有所帮助的其他书籍和文章。请包括这些参考适合哪些级别的读者。(初学者/中级/高级)>