PHP编程:PHP编程与使用
一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧! 第一章 PHP3简介PHP 是一种办事器内置式的script 言语,它的呈现使得在unix上疾速地开辟静态web成为实际。
PHP是Rasmus Lerdorf在1994年秋季构想出来的。最早的未刊行版本是他在本人的主页下去用来和旁观他的在线简历的人坚持接洽的。第一个交付用户利用的版本是在1995岁首年月刊行的,它只是被看成一个团体主页制造东西。事先它仅包含一个只能晓得很少几条宏指令的十分复杂的剖析引擎和一组用于主页信息反应的东西(一个留言簿,一个计数器和一些其他的器材)。1995年年中,Rasmus重写了全部解析器,并取名为PHP/FI 2。FI来历于他写的别的一个html表单集成数据的软件包。他把团体主页东西,表单集成东西兼并在一同,并到场了mSQL数据库的撑持,如许就有了PHP/FI。尔后PHP/FI便以一种使人惊异的速度传布开来,人们入手下手大批利用它编写法式。
咱们没法切实的统计它的利用局限,然而依据估量到1996岁尾,世界上已有最少15,000个站点在利用PHP/FIl。到了1997年年中这个数字已增加到超越50,000个站点。 1997年年中咱们也发明了PHP开展过程当中一个严重的转机。这就是PHP的开辟从Rasmus团体的喜好晋级到一群法式员们有组织的任务。 再后来,这个解析器被Zeev Suraski和Andi Gutmans重写,经由过程此次周全的重写,大批PHP/FI的功效被移植到PHP3中,而且成了PHP3的根基雏形。
到1998年年中时,已有大批的贸易化产物,例如 C2的 StrongHold web server和RedHat Linux绑缚了PHP/FI解析器或PHP3解析器,依据NetCraft估量的守旧数据,PHP已被世界上150,000个站点所采取。经由过程进一步剖析,咱们晓得其利用数目远比利用Netscape公司旗舰产物--企业级WEB办事器的站点多。 PHP3大批采取了C, Java和Perl言语的语法,并到场了各类PHP本人的特点。它与javascript等言语的一个区分就是PHP3是在办事器履行,客户机所看到的是其在办事器上运转的了局,这意味着您若想采取PHP3 scrpit,必需得有 WEB SERVER 撑持。
PHP3撑持HTTP的身份认证、cookie、GIF图像创立,它的一个最有代表性的特色是它的数据库层,它使得编写基于数据库的网页变得十分复杂。以下出了今朝所撑持的数据库:
Oracle ,Sybase , mSQL ,MySQL ,Informix ,Solid dBase ,ODBC, Unix dbm, PostgreSQL ,Adabas D,FilePro Velocis。
PHP3也撑持与采取POP3、HTTP、SNMP、NNTP、IMAP等协定的办事停止收集编程。
PHP3的法式形式
有三种办法从HTML进入"PHP法式形式":
第一种办法: <? PHP3语句; ?>
如:
<? echo("this is the simplest, an SGML processing instruction\n"); ?>
第二种办法: <?PHP PHP3语句; ?>
如:
<?php echo("if you want to serve XML documents, do like this\n"); ?>
第一种办法: <script language="php">
PHP3语句;
</script>
如:
<script language="php">
echo("some editors (like FrontPage) don't like processing instructions");
</script>
第二章 变 量
PHP3撑持上面类型的变量:
(一)、外部变量
次要有整数(interger),浮点数(float-point numbers),字符串(string),数组(array),对象(object)。
1 初始化变量
要在PHP中初始化变量, 你只需复杂的给它赋值便可。关于大多半类型,这是最直接的。关于数组和对象,可使用其它办法。
2 初始化数组
数组可使用这两种办法之一来赋值: 利用一系列一连数值,或利用array()函数机关 (见 Array functions 局部)。
要将一连的数值加进数组,你只需将要赋值赋给不带下标的数组变量。该值会作为数组的最初元素加进数组中。
例:
$names[] = "Jill"; // $names = "Jill"
$names[] = "Jack"; // $names = "Jack"
与c、perl类似,数组下标也是从0入手下手。
3 初始化对象
要初始化一个对象,需用new语句创立该类型的变量。
class foo {
function do_foo() {
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
4 变量感化域
变量的感化域就是它的无效局限。关于大多半PHP的变量只要一个感化域。在用户自界说函数里采取部分变量感化域。函数内利用的变量被缺省设置为部分变量。例如:
$a=1; /* global scope */
Function Test() {
echo $a; /* reference to local scope variable */
}
Test();
这段法式不会输入任何的器材,由于echo语句要输入部分变量 $a ,而函数内的 $a 从未被赋过值。你能够注重到这和C言语有点小小的区分,C中全局变量可以直接在函数内援用,除非它被一个部分变量所掩盖。而这使得人们能够不注重修正了全局变量的值。在PHP中要在函数外部利用全局变量必需显式的申明。例如:
$a=1;
$b=2;
Function Sum() {
global $a,$b;
$b = $a + $b;
}
Sum();
echo $b;
下面法式将输入"3"。经由过程在函数外部声明$a和$b是全局变量,所要变量都参考全局。一个函数可以把持的全局变量的数目没无限制。
感化域的别的一个值得注重的中央是static 变量。一个 static变量存在于部分函数中,但当法式分开这个函数时它的值不会丧失。思索上面的例子:
Function Test() {
$a=0;
echo $a;
$a++;
}
这个函数是没用的,由于每次挪用时它都先把$a赋为 0 然后打出"0"。 对$a++的自加没有任何后果由于函数挪用停止后变量$a 就被释放了。要使记数法式无效记数而不丢失落以后的记数了局,$a 要申明为static变量:
Function Test() {
static $a=0;
echo $a;
$a++;
}
如今,每次挪用Test()函数它城市打出$a的值并把增添它的值。
当利用递归函数时静态变量是必不成少的。递归函数就是挪用本人的函数。写递归函数时必定要非常当心,由于它的轮回次数不肯定。你必需确保有足够的前提停止递归进程。上面是一个复杂的递归函数记数到10:
Function Test() {
static $count=0;
$count++;
echo $count;
if($count < 10) {
Test();
}
}
(二) 静态变量
有时利用可变的变量名对照便利。就是说,一个可以主动态赋值和利用的变量名。一个通俗变量的赋值语句如:
$a = "hello";
一个静态变量援用该变量的值作为一个新变量的名字。在下面例中, hello,可以经由过程双$用做变量名。例:
$$a = "world";
至此,两个变量被界说并存贮在PHP符号树中: $a 的内容是"hello",$hello 的内容是 "world"。 因而,语句: echo "$a ${$a}"; 的显示了局完整同等于: echo "$a $hello";
(三)PHP内部变量
1、HTML表单(GET和POST)
当一个表单提交给PHP3 script时,PHP会主动失掉表单中的变量。例如:
<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
当按下”submit”后,PHP3会主动发生变量:$name,个中包括了用户输出的一切内容。
2、IMAGE SUBMIT 变量名
当提交一个表单时,可以经由过程上面标志用一副图取代尺度的提交按钮:
<input type=image src="http://edu.cnzz.cn/NewsInfo/image.gif" name="sub">
当用户点击该图时,两个附加变量sub_x和sub_y就会陪伴表单一同送到server上。个中包括了用户在图上点击处的坐标。有经历的人能够注重到阅读器实践送出的名字包括一个句号而不是下划线,但PHP主动将句号转换成了下划线。
3、HTTP Cookies
PHP撑持HTTP cookies。Cookies在客户端阅读器存储数据,以此和用户坚持联系或验证用户身份。你可使用setcookie() 函数来设置cookies。 Cookies是HTTP恳求头的一局部,所以必需在任何输入数据前往给用户阅读器前挪用SetCookie()函数。它相似于 Header() 函数的限制。任何用户端前往的cookies都将被主动转换为尺度的PHP变量,就象GET和POST办法的数据。
假如要在一个 cookie中设置多个值,要给这个cookie的名字加上 [] ,例如:
SetCookie("MyCookie[]","Testing", time()+3600);
注重:新的cookie将掩盖失落你的阅读器中已有的同名cookie,除非它们具有分歧的途径或域。
4、情况变量
PHP主动将情况变量转换为通俗的变量。
echo $HOME; /* Shows the HOME environment variable, if set. */
虽然来自GET,POST 及 Cookie布局的信息也会被主动转化为PHP的变量, 但最好明白的从情况变量中读取它们以确保取得准确的值。为此可以使用 getenv() 函数。也能够经由过程 putenv() 函数设置变量。
变量类型转换
PHP中不需求(也不撑持)在变量界说时做显式的类型声明;一个变量的类型取决于它的值的类型。也就是说,假如你给变量var 赋了一个字符串值,var 就成为字符串变量。假如你又赋了一个整型值给var, 它就酿成了一个整型变量。
一个PHP主动类型转换的例子是加法操作符 '+'。假如任何一个操作数是double型,则一切的操作数按 double类型来盘算, 了局也是double型的。不然,一切的操作数按integer类型来盘算, 了局也是integer型的。注重:操作数自己的类型不产生变更;类型变换仅在盘算时做
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
$foo = 5 + "10 Little Piggies"; // $foo is a double (15)
$foo = 5 + "10 Small Pigs"; // $foo is an integer (15)
要改动变量的类型,也可用settype() 函数。
1、强迫类型转换
PHP中的强迫类型转换和C中一样: 在需求停止类型强迫转换的变量前的括号中写出想要的类型名。
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is a double
答应的强迫转换是:
(int), (integer) - cast to integer
(real), (double), (float) - cast to double
(string) - cast to string
(array) - cast to array
(object) - cast to object
注重:括号中可以含有tab或空格,上面的函数将被盘算:
$foo = (int) $bar;
$foo = ( int ) $bar;
2、字符串转换
当字符串作为数值类型盘算时,了局的值和类型按以下体例决意。
假如字符串中包括任何'.', 'e',及'E'字符,则被作为double类型盘算。不然,就作为integer类型盘算。
该值从字符串最入手下手算起。假如字符串是正当的数字,则利用该值,不然值为 0 。正当的数字是一个符号位(可选),后跟一名或几位数字(也可含有一个十进制的小数点), 后跟一名可选的指数。指数是一个 'e' 或 'E'后跟一个或几个数字。
$foo = 1 + "10.5"; // $foo is a double (11.5)
$foo = 1 + "-1.3e3"; // $foo is a double (-1299)
$foo = 1 + "bob-1.3e3"; // $foo is a double (1)
$foo = 1 + "bob3"; // $foo is an integer (1)
$foo = 1 + "10 Small Pigs"; // $foo is an integer (11)
$foo = 1 + "10 Little Piggies"; // $foo is a double (11); the string contains 'e'
第三章 运算符
上面我分离看一下PHP3的算术、字符串、逻辑与对照等运算符。
1、算术运算符
+: $a + $b 加 $a加上$b
-: $a - $b 减 $a减去$b
*: $a * $b 乘 $a乘以$b
/: $a / $b 除 $a除以$b
%: $a % $b 取模 $a除以$b的余数
假如两个操作数都是整型值(字符串将被转换为整型值),除号("/") 前往整型值(整除的值)。假如任一个操作数是浮点值,则做浮点除法。
2 字符串运算符
字符串操作符只要字符串联接符 (".")。
$a = "Hello ";
$b = $a . "World!"; // now $b = "Hello World!"
3、赋值运算符
根基的赋值运算符是 "="。
一个赋值表达式的值就是所赋给的值。例如, 表达式 $a = 3 的值是3。 这答应你如许做一些庞杂的工作:
$a = ($b = 4) + 5; // 如今 $a 等于 9, $b为4 。
除根基赋值符外,还有"复合运算符"。关于一切的二进制数和字符串,答应你做变量自我复合运算。例如:
=: $a = 3;
+=:$a += 5; // 把$a 设成 8, 也就是: $a = $a + 5;
$b = "Hello ";
. :$b .= "There!"; // 把 $b 设成 "Hello There!", 就象 $b = $b . "There!";
4、 位运算符
位运算答应你对指定的数据置位或复位。
&:与运算,$a & $b 与 $a和$b都被置位则了局被置位
|:或运算,$a | $b 或 $a或$b有一个被置位则了局被置位
~:非运算,~ $a 非 $a没有被置位则了局被置位
5、 逻辑运算符
and: $a and $b 与 $a和$b同时为真则了局为真
or : $a or $b 或 $a或$b有一个为真则了局为真
xor: $a xor $b 异或 $a和$b分歧时为真则了局为真
! : ! $a 非 $a为假则了局为真
&&: $a && $b 与 $a和$b同时为真则了局为真
||: $a || $b 或 $a或$b有一个为真则了局为真
对照两个变量时,"与"和"或"运算有两种运算符这是觉得两种运算符有分歧的优先级
6、 对照运算符
对照运算符,就象名字一样,答应你对照两个值。
==: $a == $b 等于 $a等于$b了局为真
!=: $a != $b 不等于 $a不等于$b了局为真
< : $a < $b 小于 $a小于$了局为真
> : $a > $b 大于 $a大于$b了局为真
<=: $a <= $b 小于等于 $a小于或等于$b了局为真
>=: $a >= $b 大于等于 $a大于或等于$b了局为真
第四章 表达式
表达式是PHP最主要的构成元素。在PHP 3.0中,几近你所写的任何器材都是表达式。表达式的最复杂但准确的界说是"有一个值的任何器材"。
一个复杂的例子是常量和变量。当你写 "$a = 5"时, 你给 $a 赋了值 '5' 。 (在这类情形下, '5' 是一个整形常量)。 在此,你是但愿把 $a 赋值成 5。所以写 $b = $a 时,你但愿的了局就是 $b = 5 。即 $a 是一个值为 5 的表达式。
庞杂表达式的复杂例子是函数。好比说,思索以下函数:
function foo()
{
return 5;
}
假如你以为写$c = foo()实践上和写 $c = 5是一样的,那末你是对的。函数是值为其前往值的表达式。由于foo() 前往5, 所以表达式 'foo()'的值是 5 。
PHP的值固然不限于整形,且凡是都不是。PHP撑持三类值的类型: 整形值,浮点值和字符串值。PHP 撑持两种夹杂类型(non-scalar): 数组和对象。这两品种型的值可以赋给变量或从函数中前往。
PHP 3是一种面向表达式的言语, 所以几近一切器材都是表达式。思索咱们已会商的例子, '$a = 5'。很轻易看出这里有两个值,整形常量 '5'的值,和也被赋为 5 的变量 $a 的值。然而这里实践上还有一个附加的值,就是赋值语句自己的值。赋值语句自己的值就是被赋给的值,本例中是 5. 现实上,它意味着不思索 '$a = 5'要做甚么,它是一个值为 5 的表达式。如许,写诸如 '$b = ($a = 5)'的语句,就象 '$a = 5; $b = 5;' (每条语句末尾有一个分号)。由于赋值的按次是从右向左的你也能够写成 '$b = $a = 5'。
表达式盘算偏向的另外一个好例子是先加、后加及先减、后减。PHP/FI和多半其他言语的用户能够很熟习 variable++ 和 variable--。这是自加和自减操作。在 PHP/FI 2 中,语句 '$a++' 没有值(它不是表达式), 如许你就既不克不及赋值给它也不克不及经由过程任何举措利用它。PHP 3 把它们酿成了和 C 中一样的表达式从而加强了自加和自减运算的才能。和 C 中相似,PHP 3中也有两品种型的自加----先加和后加。先加和后加的实质都是变量自加,关于变量自己的感化是一样的。分歧点是自加表达式的值。形如 '++$variable'的先加, 盘算变量自加后的值(PHP先做变量自加,再读取它的值,也就叫做 '先加').形如'$variable++'的后加, 则先盘算原始变量$variable的值,然后才停止自加 (PHP在读取变量的值后再做自加,因而叫做'后加').
最多见的表达式是对照表达式。这类表达式盘算了局是 0 或 1,分离意味着 FALSE 或是 TRUE。 PHP 撑持 > (大于), >= (大于等于), == (等于), < (小于) 及 <= (小于等于)。这类表达式凡是用在前提履行里 , 例如 IF 语句。
在这里咱们最初要会商的表达式是夹杂赋值表达式。你已晓得假如要使 $a 加一,你可以复杂的写一句 '$a++' 或 '++$a'。然而假如要增添的值比1大怎样办呢,例如使它加 3 ? 你可以多写几回'$a++' ,但这 明显不是一种高效或使人乐于承受的举措。别的一个凡是的举措是写 '$a = $a + 3'。先盘算'$a + 3' 的值,在赋回到 $a, 如许 $a 就加上 3 了。在PHP 3 中,你可以象在其他几种言语(例如 C)一样把它简写,如许更明晰、快洁易懂。 把以后变量 $a 加 3 可以写成 '$a += 3'。这句话的意思是 "掏出 $a 的值, 把它加 3 , 在赋给 $a"。这除使得语句冗长、明晰,还使它履行的更快。表达式 '$a += 3'的值,和一个严厉的赋值语句一样,是所赋的值。注重:不是 3, 而是 $a 加 3 的值(这才是赋给$a 的)。任何的双操作符 可以被用于这类赋值操作形式,例如 '$a -= 5' (变量 $a 减去 5 ), '$b *= 7' ( 变量 $b 乘以 7),等等。
最初值得提到的是表达式的真值。良多时分(次要是在前提履行和轮回时),你其实不关怀表达式的特定值 , 而只是注重它代表TRUE 仍是 FALSE (PHP 没有公用的布尔类型)。PHP中利用相似perl的办法盘算表达式的真值。任何非零的值为 TRUE,零为 FALSE 。请必定注重负零的值长短零值,并被视为 TRUE ! 空字符串可 字符串 "0" 为 FALSE; 所其他的字符串为 TRUE 。关于非数目值(数组和对象) - 假如它的值不含任何元素为 FALSE, 不然为 TRUE。
第五章PHP3 言语布局
(一)、掌握布局
1、IF语句
IF语句是多半言语中的一个主要特色,它依据前提履行法式段。PHP的IF语句相似于 C:
if (expr)
statement
正如在表达式中所论说, expr 被盘算为它的真值。假如 expr 为TRUE, PHP履行响应语句, 假如为FALSE 则疏忽它。
假如$a 大于 $b,下例将显示 'a is bigger than b':
if ($a > $b)
print "a is bigger than b";
凡是,你但愿依据前提履行多于一条语句。固然,不需求给每条语句都加上 IF 判别。取而代之,可以把多条语句构成一个语句组。
If语句可以嵌套于其他 IF语句中,使你可以天真地有前提的履行法式的各个局部。
2、 ELSE语句
凡是你但愿知足特定前提时履行一条语句,不知足前提是履行另外一条语句。ELSE就是用来做这个的。ELSE 扩大IF语句,在IF语句表达式为FALSE时履行另外一条语句。例如, 上面法式履行假如 $a 大于 $b则显示 'a is bigger than b',不然显示 'a is NOT bigger than b':
if ($a>$b) {
print "a is bigger than b";
}
else {
print "a is NOT bigger than b";
}
3、 ELSEIF语句
ELSEIF,就象名字所示,是IF和ELSE的组合,相似于 ELSE,它扩大 IF 语句在IF表达式为 FALSE时履行其他的语句。但与ELSE分歧,它只在ELSEIF表达式也为TRUE时履行其他语句。
可以在一条IF语句中利用多条ELSEIF语句。第一个ELSEIF表达式为TRUE的语句将被履行。在PHP 3中,你也能够写成'else if' (写成两个单词)和 'elseif' (写成一个单词)后果一样。这只是写法上的渺小不同(假如你熟习 C,它也是),了局是完整一样的。
ELSEIF语句仅在IF表达式和任何后面的ELSEIF表达式都为FALSE,且以后ELSEIF表达式为TRUE时履行。
上面是一个含有ELSEIF和ELSE的嵌套格局的IF语句:
if ($a==5):
print "a equals 5";
print "...";
elseif ($a==6):
print "a equals 6";
print "!!!";
else:
print "a is neither 5 nor 6";
endif;
4、 WHILE语句
WHILE轮回是PHP 3的一种复杂的轮回。象在 C 中一样。WHILE语句的根基格局是:
WHILE(expr) statement
WHILE语句的意思十分复杂。它告知PHP只需WHILE表达式为TRUE就反复履行嵌套的语句。每次轮回入手下手时反省WHILE表达式的值,所以即便在嵌套语句内改动了它的值,本次履行也不会终止,而直到轮回停止(每次PHP运转嵌套的语句称为一次轮回)。相似于IF语句,你可以用大括号把一组语句括起来,在统一个WHILE轮回中履行多条语句:
WHILE(expr): statement ... ENDWHILE;
上面例子完整不异, 都打出数字 1 到 10:
/* example 1 */
$i=1;
while ($i<=10) {
print $i++; /* the printed value would be $i before the increment (post-
increment) */
}
/* example 2 */
$i=1;
while ($i<=10):
print $i;
$i++;
endwhile;
5、DO..WHILE语句
DO..WHILE 十分相似于 WHILE 轮回, 只是它在每次轮回停止时反省表达式是不是为真,而不是在轮回入手下手时。 它和严厉的WHILE轮回的次要区分是DO..WHILE的第一次轮回一定要履行(真值表达式仅在轮回停止工夫反省), 而不用履行严厉的WHILE轮回(每次轮回入手下手时就反省真值表达式, 假如在入手下手时就为FALSE, 轮回会当即终止履行).
DO..WHILE轮回只要一种模式:
$i = 0;
do {
print $i;
} while ($i>0);
下面轮回只履行一次, 由于第一次轮回后,当反省真值表达式时, 它算出来是 FALSE ($i 不大于 0)轮回履行终止。
6、 FOR轮回语句
FOR轮回是PHP中最庞杂的轮回。象在 C 中一样。 FOR轮回的语法是:
FOR (expr1; expr2; expr3) statement
第一个表达式(expr1)在轮回入手下手时无前提的盘算(履行)。
每次轮回, 表达式 expr2 都被盘算。假如了局为 TRUE, 则轮回和嵌套的语句持续履行。假如了局为 FALSE,则全部轮回结 束。
每次轮回停止时, expr3 被盘算(履行). 每个表达式都可为空。expr2 为空则轮回的次数不定(PHP 默许它为TRUE,象C一样)。除非你要经由过程一个前提的 BREAK语句取代FOR 的真值表达式来停止轮回,不然不要如许。
思索上面例子。它们都显示数字 1 到 10:
/* example 1 */
for ($i=1; $i<=10; $i++) {
print $i;
}
/* example 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
/* example 3 */
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
print $i;
$i++;
}
固然,第一个例子明显是最好的,但借此你可以发明在FOR 轮回中良多场所可使用空的表达式。
其他的言语有一条foreach语句用来遍历一个数组或哈希(hash)表。PHP利用while语句和 list()、each() 函数来到达这个功效。
7、 SWITCH选择语句
SWITCH语句就象是对统一个表达式的一系列IF语句。在良多时侯,你想把统一个变量(或表达式)和很多分歧的值去对照 ,并依据分歧的对照了局履行分歧的法式段。这就是 SWITCH语句的用途了。
上面两个例子经由过程分歧的办法做统一件事,一个用一组 IF语句,别的一个用 SWITCH 语句:
/* example 1 */
if ($i == 0) {
print "i equals 0";
}
if ($i == 1) {
print "i equals 1";
}
if ($i == 2) {
print "i equals 2";
}
/* example 2 */
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}
(二)、REQUIRE语句
REQUIRE语句用指定的文件取代本人,很象 C 中的预处置 #include 。
这意味着你不克不及为了每次挪用该函数来包括分歧文件的内容,而把require()语句放在一个轮回布局,。要这么做,利用 INCLUDE 语句。
require('header.inc');
(三)、 INCLUDE语句
INCLUDE语句包括指定的文件。
每次碰到INCLUDE是INCLUDE语句就包括指定的文件。所以你可以在一个轮回布局中利用INCLUDE语句以包括一系列分歧的文件。
$files = array('first.inc', 'second.inc', 'third.inc');
for ($i = 0; $i < count($files); $i++) {
include($files[$i]);
}
(四)、 函数
可以经由过程以下的语法界说函数:
function foo( $arg_1, $arg_2, ..., $arg_n ) {
echo "Example function.\n";
return $retval;
}
函数中可使用任何无效的PHP3 代码,乃至是其他的函数或类 的界说
1、 函数前往值
函数可以经由过程可选的return语句前往值。前往值可所以任何类型,包含列表和对象。
function my_sqrt( $num ) {
return $num * $num;
}
echo my_sqrt( 4 ); // outputs '16'.
函数不克不及同时前往多个值,但可以经由过程前往列表的办法来完成:
function foo() {
return array( 0, 1, 2 );
}
list( $zero, $one, $two ) = foo();
2、 参数
内部信息可以经由过程参数表来传入函数中;参数表就是一系列逗号分隔的变量和/或常量。
PHP3撑持经由过程值形参数(默许), 变量参数,和 默许参数。不撑持变长参数表, 但可以用传送数组的办法来完成。
3、 联系关系参数
默许情形函数参数是传值体例。假如你答应函数修正传入参数的值,你可使用变量参数。
假如你但愿函数的一个模式参数一直是变量参数,你可以在函数界说时给该模式参数加(&)前缀:
function foo( &$bar ) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo( $str );
echo $str; // outputs 'This is a string, and something extra.'
假如要传递一个可变参数给默许的函数(其模式参数不是变参体例),你可以在挪用函数时给实践参数加(&)前缀:
function foo( $bar ) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo( $str );
echo $str; // outputs 'This is a string, '
foo( &$str );
echo $str; // outputs 'This is a string, and something extra.'
4、 默许值
函数可以界说 C++ 作风的默许值,以下:
function makecoffee( $type = "cappucino" ) {
echo "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee( "espresso" );
上边这段代码的输入是:
Making a cup of cappucino.
Making a cup of espresso.
注重,当利用默许参数时,一切有默许值的参数应在无默许值的参数的后边界说;不然,将不会按所想的那样任务。
5、CLASS(类)
类是一系列变量和函数的纠合。类用以下语法界说:
<?php
class Cart {
var $items; // Items in our shopping cart
// Add $num articles of $artnr to the cart
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
}
// Take $num articles of $artnr out of the cart
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
下面界说了一个叫Cart 的类,个中包含一个联系关系数组和两个用来从cart中增添和删除项目标函数。
类是实践变量的原始模子。你要经由过程new 操作符来创立一个所需类型的变量。
$cart = new Cart;
$cart->add_item("10", 1);
这创立起一个 Cart类的对象$cart。该对象的函数add_item()被挪用来给第10项加 1。
类可以从其他的类扩大失掉。扩大或派生出来的类具有基类的一切变量和函数及你在扩大界说中所界说的器材。这要利用 extends 关头字。
class Named_Cart extends Cart {
var $owner;
function set_owner($name) {
$this->owner = $name;
}
}
这里界说了一个名为 Named_Cart 的类它承继了 Cart类一切变量和函数并增添了一个变量 $owner和一个函数 set_owner()。 你创立的 named_cart 类的变量如今就可以设置carts 的 owner了。在named_cart变量中你依然可使用普通的 cart函数:
$ncart = new Named_Cart; // Create a named cart
$ncart->set_owner("kris"); // Name that cart
print $ncart->owner; // print the cart owners name
$ncart->add_item("10", 1); // (inherited functionality from cart)
函数中的变量 $this 意思是以后的对象。你需求利用 $this->something 的模式来存取一切以后对象的变量或函数。
类中的机关器是你创立某品种的新变量时主动被挪用的函数。类中和类名一样的函数就是机关器。
class Auto_Cart extends Cart {
function Auto_Cart() {
$this->add_item("10", 1);
}
}
这里界说一个类 Auto_Cart ,它给 Cart类加了一个每次new操作时设置项目10停止变量初始化的机关器。机关器也能够有参数,这些参数是可选的,这类特色也使得其非常有效。
class Constructor_Cart {
function Constructor_Cart($item = "10", $num = 1) {
$this->add_item($item, $num);
}
}
// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;
// Shop for real...
$different_cart = new Constructor_Cart("20", 17);
基础这个东西是个比较笼统的概念,如果你之前学习过c语言, c语言被认为是 小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 兴趣是最好的老师,百度是最好的词典。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 爱上php,他也会爱上你。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 本文当是我的笔记啦,遇到的问题随时填充
页:
[1]