仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 784|回复: 19
打印 上一主题 下一主题

[学习教程] PHP教程之php编写大型网站成绩集

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。成绩   PHP以其易用性失掉敏捷的推行,但易用并非说就可以用好它,实践上很多法式员用它很轻易的立一个个WEB使用体系,但又有几何人细心的思索过他们的代码,是不是轻易保护、是不是足够强健、否效力足够高、是不是足够平安,当PHP用于创立大型网站时这些就成为很关头的要素。上面咱们从较稍微的成绩入手下手会商,直至一些致命的毛病。共分三局部。

第一局部、较稍微的毛病

1、Printf(),
  该函数次要用来格局化显示数据。当你要改动某个数据的显示格局时才利用。例如以分歧的精度来显示PI(3.1415926)的值。

<?php
 /*
 * The three faces of Π
 */
 printf ("Pi is: %.2fn<br>n", M_PI);
 printf ("Pi is also: %.3fn<br>n", M_PI);
 printf ("Pi is also: %.4fn<br>n", 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 ("n", $site_info->links);
 $names = explode ("n", $site_info->link_names);

for ($i = 0; $i < count ($links); $i++)
{
 print "ttt <a href="$links[$i]">$names[$i]</a> n<br>n";
}
}
?>

这类办法使得法式看起来对照简约,并且履行速度也较快。


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手册反省那些函数已过时实时修改。  我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单。
小妖女 该用户已被删除
沙发
发表于 2015-2-4 11:58:55 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
海妖 该用户已被删除
板凳
发表于 2015-2-4 16:39:33 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
深爱那片海 该用户已被删除
地板
发表于 2015-2-10 04:06:12 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
透明 该用户已被删除
5#
发表于 2015-2-10 13:40:26 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
再见西城 该用户已被删除
6#
发表于 2015-2-11 08:25:02 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
柔情似水 该用户已被删除
7#
发表于 2015-2-28 10:38:18 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
愤怒的大鸟 该用户已被删除
8#
发表于 2015-3-3 14:17:15 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
若相依 该用户已被删除
9#
发表于 2015-3-11 11:13:57 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
小女巫 该用户已被删除
10#
发表于 2015-3-16 06:50:51 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
admin 该用户已被删除
11#
发表于 2015-3-22 21:00:37 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
飘灵儿 该用户已被删除
12#
发表于 2015-3-23 22:48:37 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
莫相离 该用户已被删除
13#
发表于 2015-3-25 06:22:29 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
变相怪杰 该用户已被删除
14#
发表于 2015-4-4 01:24:57 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
冷月葬花魂 该用户已被删除
15#
发表于 2015-4-7 04:53:13 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
谁可相欹 该用户已被删除
16#
发表于 2015-4-12 09:48:58 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
山那边是海 该用户已被删除
17#
发表于 2015-4-12 18:03:44 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
第二个灵魂 该用户已被删除
18#
发表于 2015-4-21 13:23:14 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
再现理想 该用户已被删除
19#
发表于 2015-4-23 06:07:09 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
金色的骷髅 该用户已被删除
20#
发表于 2015-4-25 09:14:25 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 23:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表