|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。成绩 php编写大型网站成绩集
PHP以其易用性失掉敏捷的推行,但易用并非说就可以用好它,实践上很多法式员用它很轻易的立一个个WEB使用体系,但又有几何人细心的思索过他们的代码,是不是轻易保护、是不是足够强健、否效力足够高、是不是足够平安,当PHP用于创立大型网站时这些就成为很关头的要素。上面咱们从较稍微的成绩入手下手会商,直至一些致命的毛病。共分三局部。
第一局部、较稍微的毛病
1、Printf(),
该函数次要用来格局化显示数据。当你要改动某个数据的显示格局时才利用。
例如以分歧的精度来显示PI(3.1415926)的值。
<?php
/*
* The three faces of Π
*/
printf ("Pi is: %.2f
", M_PI);
printf ("Pi is also: %.3f
", M_PI);
printf ("Pi is also: %.4f
", M_PI);
?>
但很多法式员仅仅为显示一些变量值和函数前往值利用该函数。由于Printf()在显示数据前要先格局化该数据以速度较慢,因而,仅为了显示数据时使用print和echo,以进步速度。
2、语意反省
PHP是一种弱类型言语,也就是说在利用一个变量前不必界说,如许给编程带来了很大的便利和天真,但你本人必需晓得该变量究竟应当是哪一种类型,由于该变量在运转时仍实践对应着某一品种型(各类类型之间可以自在相互转换),没有类型的变量是不存在的。有能够PHP其实不能反省出你的语意毛病,但因为变量类型的变更,会招致一些潜伏的成绩的产生。别的一个值得注重的成绩是变量的局限,它也能够会招致一些潜伏的成绩的产生。
在PHP中有以下几种根基变量:
Boolean, resource, integer, double, string, array and object。
3、一时变量的利用
一时变量的滥用会招致法式运转效力的下降。什么时候利用一时变量可基于以下两点思索:
1、该变量是不是最少利用两次。
2、该变量的利用是不是会明显进步法式的可读性。
假如一条也不知足,则省略该变量的利用。例如:
<?php
$tmp = date ("F d, h:i a"); /* ie January 3, 2:30 pm */
print $tmp;
?>
就应当改成:
<?php
print date ("F d, h:i a");
?>
又如:
<?php
// string reverse_characters(string str)
// Reverse all of the characters in a string.
function reverse_characters ($str)
{
return implode ("", array_reverse (preg_split("//", $str)));
}
?>
的可读性不强,可改成:
<?php
// string reverse_characters(string str)
// Reverse all of the characters in a string.
function reverse_characters ($str)
{
$characters = preg_split ("//", $str);
$characters = array_reverse ($characters);
return implode ("", $characters);
}
?>
4、客户端和办事器端代码的分别
客户端和办事器端代码的在PHP法式中实践上就是HTML代码和PHP言语代码,良多人把HTML和PHP语句夹杂在一个文件里,使得这文件很大,这类作风对法式的保护和再开辟很晦气,不合适大型站点的开辟。普通有两种办法把HTML和PHP语句分隔:
1、编写公用API,例如:
index.php ? The Client side
<?php include_once ("site.lib"); ?>
<html>
<head>
<title> <?php print_header (); ?> </title>
</head>
<body>
<h1> <?php print_header (); ?> </h1>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="25%">
<?php print_links (); ?>
</td>
<td>
<?php print_body (); ?>
</td>
</tr>
</table>
</body>
</html>
site.lib ? The server side code
<?php
$dbh = mysql_connect ("localhost", "sh", "pass")
or die (sprintf ("Cannot connect to MySQL [%s]: %s",
mysql_errno (), mysql_error ()));
@mysql_select_db ("MainSite")
or die (sprintf ("Cannot select database [%s]: %s",
mysql_errno (), mysql_error ()));
$sth = @mysql_query ("SELECT * FROM site", $dbh)
or die (sprintf ("Cannot execute query [%s]: %s",
mysql_errno (), mysql_error ()));
$site_info = mysql_fetch_object ($sth);
function print_header ()
{
global $site_info;
print $site_info->header;
}
function print_body ()
{
global $site_info;
print nl2br ($site_info->body);
}
function print_links ()
{
global $site_info;
$links = explode ("
", $site_info->links);
$names = explode ("
", $site_info->link_names);
for ($i = 0; $i < count ($links); $i++)
{
print "
<a href="$links[$i]">$names[$i]</a>
";
}
}
?>
这类办法使得法式看起来对照简约,并且履行速度也较快。
2、利用模板的办法
这类办法使得法式看起来更简约,一样完成下面的功效,可用以下代码:
<html>
<head>
<title>%%PAGE_TITLE%%</title>
</head>
<body %%BODY_PROPERTIES%%>
<h1>%%PAGE_TITLE%%</h1>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="25%">%%PAGE_LINKS%%</td>
<td>%%PAGE_CONTENT%%</td>
</tr>
</table>
</body>
</html>
用占位符取代要静态生成的内容,然后用一解析法式剖析该模板文件,把占位符用际的内容交换。种办法使得即便不会利用PHP的页面制造人员也能修正模板文件。这类办法的弱点是履行效力不高,由于要注释模板文件。同时完成起来也对照庞杂。
注: www.thewebmasters.net的 FastTemplate class可便利的完成以上功效。
5、不要用过时的函数
作为一种自在软件,PHP开展很快,个中的良多函数都已过时,例如:
while (1):
print "5";
if ($idx++ == 5):
break;
endif;
endwhile;
固然还能用但效力一定不高,并且能够在今后的版本中会禁用,招致法式不克不及运转。因而要常常对比最新PHP手册反省那些函数已过时实时修改。 根据功能来进行封装等。很多的不懂,在使用搜索引擎查找,或者请教老师和在老师详细的讲解、指导下,都能顺利解决。 |
|