仓酷云

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

[学习教程] PHP网站制作之您懂得 PHP 吗?

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-3 23:57:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了,     PHP 的早期
  我在大约 10 年前入手下手开辟 PHP。那时在名词“开放源代码”呈现且 GPL 和自在软件广为人知之前好久。正多么多已变得盛行的开放源代码项目一样,念头决不是哲学上的或乃至是自我沉醉。它地道是由于需求一种东西来处理实际中与 Web 相干的成绩。在 1994 年,当提到 Web 开辟东西时,选择相当无限。我发明当我本人在用 C 或 Perl 为 Web 站点编写静态组件时,从一个成绩到另外一个成绩的代码堆叠景象非常明显。出于功能的思索,我愈来愈阔别 Perl,而偏向于 C,由于必需将 Perl 作为一个独自的 CGI 运转的 fork+exec 开支限制性太强了。
  PHP 最早的未宣布版本次要是经常使用 C 函数的一个 C 材料库,我编写了这些 C 函数,以便可以轻易地从一个开放源代码项目到另外一个开放源代码项目停止重用。我有一个复杂的形态机驱动的剖析器,它从 HTML 文件中挑出标志,然后挪用我编写的后端 C 函数。这些代码最后是作为一个称为团体主页东西 (Personal Home Page Tools) 的法式包公然宣布的,这个法式包中的每一个东西都是关于若何利用体系来处理关于团体主页的罕见成绩的一个例子。在以后的某段工夫,我从平分出了一局部东西并把它称为 FI,代表表单注释法式 (Form Interpreter)。FI 幕后的设法是,当您吸收到一个表单提交的了局时,您需求做一些罕见的工作,而它可以处置一切这些工作。一些初期的例子:
<!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->
  我的 FI 的剖析器十分糟,这促使我试着去编写一个更好的剖析器。我丢弃了 <!-- cmd --> 语法,而改用 <? cmd >,从头将 Personal Home Page Tools 的某些局部和这个新的 FI 东西联合起来,并在 1995 岁尾将它作为一个称号为 PHP/FI (这个称号有点半开顽笑性质地仿照了 TCP/IP)的法式包对外宣布。PHP/FI 在接上去的几年里正好和 Web 一同失掉了开展。在 1997 年,两个正利用 PHP/FI 的以色列人 Zeev Suraski 和 Andi Gutmans 问我是不是有乐趣利用一个新的剖析引擎,他们将为下一个版本的 PHP 编写这个引擎。我召集了其它一些一向在为 PHP/FI 供应补钉和代码的人,咱们配合协作在 1998 年中期宣布了 PHP 第 3 版。这多是 PHP 开展时代最关头的时辰。假如这个项目一向是一团体在勉力,那末事先它能够已掉败了,假如一群方才组合在一同的生疏人弄不清晰若何朝着一个配合的方针去勉力,那末这个项目也能够很轻易就掉败了。不管如何,咱们想法处理了咱们以自我为中间的成绩和其它的团体成绩,这个项目生长了起来。为这个项目做出奉献的人的数目在不乱地增加,如今咱们盘算在 2004 年上半年的某个时分推出 PHP 5.0 版本。
  编程言语中的“丑小鸭”
  关于 PHP 的盛行概念可以分为两个极端。言语纯化论者常常不喜好很多有点随便的特征实行和这些年来呈现的一些前后纷歧致的中央。同时,实践成绩的处理者常常喜好 PHP 仿佛已读懂您的意图,并体现出它就是幻想的 Web 成绩处理东西。
  在使纯化论者抓狂的工作中有:函数称号不辨别巨细写但变量称号辨别巨细写;内置函数的称号前后纷歧致;没有强迫 PHP 开辟人员利用任何真实的布局,从而使得很轻易写出混乱的代码。实践上我不能不赞同这些品评定见,但我最少可以试着注释一下咱们若何和为何到了这类形态。
  起首,关于函数名辨别巨细写的成绩:这可以回溯到最早的 PHP 版本。在 Web 的初期(XHTML 之前好久),一切的 HTML 标志标签都是大写的是很罕见的。但由于这些标签是不辨别巨细写的,所以人们在这下面并非十分分歧。我但愿人们看待详细的 PHP 标签根基就像和看待其它的标志标签一样,这意味着 PHP 的标签也将是不辨别巨细写的。当 PHP 变得加倍初级而且具有了如变量之类的特征时,使这些新的特征辨别巨细写并没有甚么坏处,由于它没有损坏对已有的 PHP 页面的向后兼容性。回过火去,俄然处置最后的复杂标签(这些标签本色上只是函数挪用)时,辨别巨细写将损坏那些页面,并使它们在更新的 PHP 版本中不成用。不管若何,人们不该该具有只是称号巨细写分歧的函数。虽然如斯,回忆起来,当绝对少的人在利用 PHP 时,尽早地打破向后兼容性是个好主张;但在那时,没有人意料到 PHP 的惊人生长。
  至于函数定名自己,我常常是从我熟习的其它言语和 API 自创一些设法。这意味着 PHP 具有诸如 strlen() 和 substr() 之类的函数,它们假如写成 str_len() 或 sub_str(),那看起来将有点好笑。我增添了如 stripslashes() 之类的函数,这些函数因为长度的缘由经常被写为 StripSlashes(),以使其更容易于读懂。同时,我仿照了底层的数据库 API,诸如函数 msql_connect() ― miniSQL 是第一个被 PHP 撑持的数据库 ― 它们可以使用下划线定名。熟习这些分歧来历的人将十分熟习 PHP 中的定名。当 PHP 作为 Web 办事器和您想要挂在 Web 办事器上的一切分歧后端东西之间的一个接口时,它并非如许一种自力的言语。因而,明天当人们看到 PHP 作为一种自力的言语,而没有思索其前后关系的时分,它能够看起来有点前后纷歧致。
  关于短少强迫的布局,我能说的是,我相对仇恨使我限制在处理成绩的某种特定办法上的编程框架。这不料味着我不信任布局和框架,但我切实其实信任人们可以提出他们本人的、与他们的情况相当的办法。在本文稍后我论说各类 PHP 项目标能够系统布局时,将更多地触及这个成绩。
  一切这些归结为 PHP 历来不盘算去博得任何“选美竞赛”。它的目标不是要引入任何新的反动性的编程典范。它的目标是处理单个成绩:Web 成绩。这类成绩能够会相当好看,有时您需求一种好看的东西来处理好看的成绩。实践上,固然一种大度的东西也能够处理成绩,但经常一种好看的 PHP 处理计划可以更疾速地失掉实行,而且利用更少的资本。这也许总结了这些年来 PHP 的刚强的“功效优于模式”的办法。
  给设计师的建议
  PHP 的最盛行的安排形式是将它直接和事后分支的多历程 Apache 1.3.x Web 办事器毗连起来。和利用 Java 分歧的是,不存在自力的进程(如 JVM)。PHP 相似于如 Perl 和 Python 之类的剧本言语,在这些剧本言语中,直接剖析和履行剧本。
  没有中心掌握进程是一个特征,同时也是给很多人带来极大波折的缘由。PHP 不同享任何系统布局 ― 个中每条恳求都完整分歧而且可以同其它任何恳求分隔 ― 使这类言语自己具有没有限的平行可伸缩性。PHP 勉励您把可伸缩性成绩放到需求它的条理上去。假如您需求同享的数据存储,那末就利用一个撑持复制和可以扩大到您需求的条理上的数据库。假如您需求负载平衡恳求或将特定的恳求分派到特定的办事器上,那末就利用一个撑持这类功效的前端负载平衡器。经由过程消弭中心掌握进程,PHP 防止了成为体系中的瓶颈。这是使 PHP 辨别于人们凡是称之为使用办事器的东西的剖断特征。



[oarch1.png] 用于高端 PHP 安排的一个十分罕见的系统布局

  在上图中,一个或更多的负载平衡器将进入的恳求分派在恣意数目的 Web 办事器上。思索到数据存储,您能够在每一个 Web 办事器上安排一个只读的数据库拷贝(假如数据集足够小,答应您那末做的话),或您能够创立一个独自的数据库办事器树来处置各类类型的恳求。
  增添布局
  PHP 超越其它很多针对处理 Web 成绩的东西的伟大优势之一是,其它的东西常常把这类十分详细的方针成绩的处理和从布局上掌握用户处理成绩的体例的请求接洽在一同。PHP 不强迫利用任何这类布局,相反选择专注于使成绩的各个独自的功效方面尽量地易于利用。例如,PHP 供应目标性十分强的函数来与后端数据库通讯。这些函数是各个数据库公用的,而且不就义任何功能来获得和其它后端数据库的一致性或分歧性。在文件结构方面,也没有划定的办法来构建 PHP 使用法式的布局。
  PHP 不强迫利用布局的现实其实不意味着您不该该以一种井井有条和布局化的体例来构建 PHP 使用法式。当人们问我将若何着手构建一个大型 PHP 使用法式的布局时,我喜好向他们展现上面这类办法。
   +--------------------------------+
   |     HTML TEMPLATES             |
   |     $DOC_ROOT/*.php            |
   +--------------------------------+
   |     TEMPLATE HELPERS           |
   |     $DOC_ROOT/*.inc            |
   +--------------------------------+
   |     BUSINESS LOGIC             |
   |     /usr/local/php/*.inc       |
   +--------------------------------+
   |     C/C++ CORE CODE            |
   |     /usr/local/lib/php/*.so    |
   +--------------------------------+
  这个分四个条理的办法处理了一些成绩。起首,它将一个典范项目中的内容沿着职责的线索分隔。Web 前端开辟人员从顶层停止任务,后端工程师从底层停止任务。他们在模板助手层有一点交叠。它还分隔了包括 HTML 的任何文件,将它们放到 document_root 中,而将不包括 HTML 的任何文件放到 document_root 外。
  顶层的模板层普通包括十分少的 PHP ― 只是复杂的函数挪用和偶尔的包括。能够一个轮回。这些文件凡是用一个 HTML 编纂东西来停止编纂。第二层,即模板助手,是界说商务逻辑和结构之间的接口的中央。这一层能够有一些便利的函数(如 start_table()、 show_user_record())和其它任何可重用的组件,这些可重用组件使得模板制造者的任务加倍轻易。
  商务逻辑层完整不包括任何 HTML。这是实行诸如 SQL 查询和任何其它的 PHP 用户空间商务逻辑之类的器材的中央。您可以希冀看到一个诸如 get_user_record() 之类的函数在这一层失掉实行。这个函数将获得一个 ID,履行响应的 SQL 查询,然后前往包括了局的一个结合数组。然后,该层中的一个函数获得该数组,并为它包装一些 HTML,使它看起来好一点。
  最初的 C/C++ 层是您安置一个项目所需的任何定制的后端代码的中央。很多人在这一层上没有任何器材,但假如您有一个公用的 C 或 C++ 材料库,您就能够在这里编写一个 PHP 扩大来和材料库接口。有时当一个用用户空间 PHP 编写的商务逻辑函数太慢时,也将利用这一层。
  雇用和培训 PHP 开辟人员
  PHP 不是一种新的言语。它没有引进任何新的概念。这意味着培训已懂得 C、C++、Perl 或乃至 Java 中的恣意一种言语的编程人员来编写 PHP 代码相当轻易。当我找 PHP 开辟人员来做一个项目标时分,我偏向于找具有 C 或 C++ 妙技的人,我的设法是雇用经历丰厚的编程人员要比雇用必需对 PHP 十分懂得的人员轻易很多。假如他们可以把握这些言语,PHP 对他们来讲将是小菜一碟。固然,假如他们有两方面的经历,那就更好了。
  随便安排 PHP
  利用适合的东西停止任务。我碰到过一些完整采取了 PHP 的公司,它们相对是将 PHP 安排到了每一个中央,但 PHP 从未盘算成为一种合适于一切成绩的通用言语。它次要合适于作为 Web 的前端剧本言语。取决于 Web 站点的通讯量,它还可以用来履行多量量的后端任务。但在某些中央,您将需求用一种强类型的编译言语(如 C 或 C++)来编写您的局部代码,以取得最优的功能。
  PHP 将去向何方?
  人们经常问我 PHP 将去向何方。这是一个很难回覆的成绩,由于 PHP 次要是一个应运而生的开放源代码项目,它的开展是为了知足其社区的需求。在 PHP5 中,OO 功效和与 XML 的集成失掉了大大的改善。咱们集成了一个称为 SQL-Lite 的风趣东西,这个东西直接为文件供应了一个 SQL 接口,而无需办事器。很分明,它替换不了实践的数据库,但利用它无疑是比试图编写您本人的纯文本文件处置例程好很多的一种办法。它为您供应了一个 SQL 接口的现实意味着到一个实践数据库的移植(假如在任什么时候候需求这么做的话)变得更轻易。
  在 PHP5 中的这些变更固然很严重,但倒是渐进的。咱们其实不盘算用这个版本把 PHP 的世界弄个天崩地裂翻天覆地。为 PHP4 编写的剧本中,根基不作修正便可在 PHP5 下任务。最大的变更是在 PHP5 中对对象的处置分歧了。当您在 PHP5 中新建一个对象时,如今将默许地取得到该对象的一个援用,您可以各处传递它,而无需像您在 PHP4 中必需做的那样显式地声明您想经由过程援用来传递对象。在 PHP5 中,假如您想实践取得对象的一个拷贝,那末您需求“克隆”它。
  更久远地看,有人在研讨 Parrot 引擎的利用。Parrot 是作为 Perl6 后真个引擎编写的,但它实践上是一个与言语有关的通用剧本引擎。假如各类剧本言语可以全体在单个后端引擎上告竣分歧,然后这个引擎可以用作公共扩大和更好的言语交互的基本,那末这将十分风趣。
  另外还有其它一些人在研讨经由过程 JSR 223 的 Java 连通性,以为 Java 是可以成为剧本言语的单个通用后端。
  不论 PHP 能够具有如何的一个将来,有一点是不变的。咱们将持续和很多人仿佛沉浸于个中的庞杂性作奋斗。最庞杂的处理计划很少是准确的处理计划。咱们为处理 Web 成绩而供应的专注、直接的办法恰是使 PHP 从一入手下手就不同凡响的中央,当咱们四周的其它处理计划仿佛变得愈来愈复杂、愈来愈庞杂时,咱们正勉力地简化和优化 PHP 和它处理 Web 成绩的办法。
PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。
再现理想 该用户已被删除
19#
发表于 2015-7-4 02:25:41 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
18#
发表于 2015-6-27 01:07:01 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
只想知道 该用户已被删除
17#
发表于 2015-5-9 23:17:57 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
小魔女 该用户已被删除
16#
发表于 2015-5-4 05:36:45 | 只看该作者
当然这种网站的会员费就几十块钱。
山那边是海 该用户已被删除
15#
发表于 2015-4-27 18:48:37 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
老尸 该用户已被删除
14#
 楼主| 发表于 2015-4-21 02:20:35 | 只看该作者
兴趣是最好的老师,百度是最好的词典。
兰色精灵 该用户已被删除
13#
发表于 2015-4-20 20:52:36 | 只看该作者
当然这种网站的会员费就几十块钱。
柔情似水 该用户已被删除
12#
发表于 2015-4-7 00:18:36 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
小女巫 该用户已被删除
11#
发表于 2015-4-4 16:54:17 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
精灵巫婆 该用户已被删除
10#
发表于 2015-3-23 13:24:06 | 只看该作者
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
蒙在股里 该用户已被删除
9#
发表于 2015-3-14 23:22:57 | 只看该作者
实践是检验自己会不会的真理。
因胸联盟 该用户已被删除
8#
发表于 2015-3-14 09:38:25 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
飘飘悠悠 该用户已被删除
7#
发表于 2015-3-7 04:19:38 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
admin 该用户已被删除
6#
发表于 2015-3-3 13:08:44 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-27 09:50:59 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-9 16:02:16 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
透明 该用户已被删除
板凳
发表于 2015-2-9 09:17:53 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
变相怪杰 该用户已被删除
沙发
发表于 2015-2-4 13:15:01 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
金色的骷髅 该用户已被删除
楼主
发表于 2015-2-4 07:26:50 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 08:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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