php学习笔记(二)
1、php的switch比较特别,支持字符串等其他基础类弄。
function dump_array($var) { switch(gettype($var)){ case 'integer': case 'double': case 'string': echo $var; break; case 'array': echo '<table border="1">'; do{ echo '<tr><td align="left" valign="top">'; echo key($var); echo '</td><td>'; dump_array($var[key($var)]); echo '</td></tr>'; } while (next($var)); echo '</table>'; break; default: echo 'Unknow data type.'; break; } }
2、面向对象
2.1 php对 对象的支持并不完整,例如不能充分使用多态性,以执行一个被覆盖的父类中的函数。
2.2 php不能有同一个对象的两个引用,当将一个引用赋值给第二个变量时,对像被复制一份,新的引用指向复制品。
3、url 参数都应使用 rawurlcode()函数转换编码,否则容易出现非法值而引起崩溃
使用rawurlcode编码后,接收时,解码过程是自动的。
4、php 与 html混编
php中,在函数调用前加上@可以强制不输出里面相应的警告和错误信息。
以下是一个混编的mysql数据库连接页。
<?php require ('common.inc'); require ('post_get_arr.inc') ?> <?php if(empty($arr_request['username'])) { $username = 'root0'; } else{ $username = $arr_request['username']; } if(empty($arr_request['password'])) { $password = '123456'; } else{ $password = $arr_request['password']; } $id_link = @mysqli_connect('localhost' , $username , $password); if (!$id_link){ affy_message( "The connection to the local database has failed. Please enter a username and password so a connection can be made." ); ?> <!-- Display a form to gather username and password info --> <form action="connect_db.php" method="post"> <table> <tr> <td>Username</td> <td><input type="text" name="username" value="root"></td> </tr> <tr> <td>Password</td> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="Connect to Database"> </td> </tr> </table> </form> <?php exit; } ?> <p> The connect was successful!</p>
5、可以在php调用的最前面,调用这些代码,将get 和 post 参数统一放到数组中
<?php //post and get value $arr_request = array(); $HTTP_GET_VARS = $_GET; $HTTP_POST_VARS = $_POST; if (count($HTTP_GET_VARS)){ while(list($key , $value) = each($HTTP_GET_VARS)){ $arr_request[strtolower($key)] = $value; } } if (count($HTTP_POST_VARS)) { while (list($key, $value) = each($HTTP_POST_VARS)){ $arr_request[strtolower($key)] = $value; } } ?>
Stay hungry, stay foolish!