金色的骷髅 发表于 2015-2-3 23:29:53

PHP网站制作之PHP C 架O Data Access Layer 篇...

在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。   
起首,也许陈说一下架构的联系关系,以下所述:
起首会先设计 尺度 DAL class (STDAL),放置 getData, delete, update 等 尺度罕见的功效函数
在来设计程式会用到的各类 DAL ,根基上每个 Table 都需求有一个 DAL 来完成,前面依据 table 使用、画面出现等需求,也能够一个 table 有多个 DAL ,这各不雅念相似 View 的概念。
依据 贸易逻辑的操作,制造对应的 BLL,像是insert、update 前的材料反省,这局部会依据商务使用的分歧而分歧,所以上面不做示范。
在来要有一个 DAL 发生工场(DALFactory),专门用来协助创立 DAL 的实体,由于 DAL 程式档案,能够放在另外一台主机,或是 分歧目次地位中等等要素,为简化开辟人员的承当,所以 DAL 创立体例,一致封装在 DALFactory 外面
接上去,按照上述建了下述程式:
STDAL.php


1 <?php 2 class STDAL 3 { 4 public $TableName; 5 6 public function __construct() { 7 echo $this->TableName." init STDAL<br>"; 8 } 9 10 public function getData() 11 { 12 print "select * from ".$this->TableName."<br>"; 13 } 14 15 public function setDB($db) 16 { 17 echo $db."<br>"; 18 } 19 } 20 ?>

   
STUser.php


1 <?php 2 class DAL_STUser extends STDAL 3 { 4 public function __construct() { 5 $this->TableName = "STUser"; 6 parent::__construct(); 7 } 8 } 9 ?>

   
STDoc.php


1 <?php 2 class DAL_STDoc extends STDAL 3 { 4 public function __construct() { 5 $this->TableName = "STDoc"; 6 parent::__construct(); 7 } 8 } 9 ?>

   
上面 DAL 发生工场,有应用我在 PHP &ndash; 种别初探 中所讲的技能,有乐趣可在去看下。
DALFactory.php


1 <?php 2 class DALFactory 3 { 4 private static $db; 5 6 public static function getInstance($prgName) { 7 8 if(!self::$db) { 9 self::$db = $prgName." get DB connection"; 10 } 11 $class = "DAL_$prgName"; 12 $obj = new $class(); 13 $obj->setDB(self::$db); 14 return $obj; 15 } 16 } 17 ?>

   
上述就已完成 Data Access Layer 的制造,接上去 我门测试一下,是不是正常运作。
test.php


1 <?php 2 $prgName = "STUser"; 3 $obj = DALFactory::getInstance($prgName); 4 $obj->getData(); 5 6 $prgName = "STDoc"; 7 $obj = DALFactory::getInstance($prgName); 8 $obj->getData(); 9 ?>

yY果,以下所示:
STUser init STDAL
STUser get DB connection
select * from STUser
STDoc init STDAL
STUser get DB connection
select * from STDoc
咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。

老尸 发表于 2015-2-3 23:47:17

刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。

小妖女 发表于 2015-2-4 23:10:00

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

admin 发表于 2015-2-10 22:42:28

基础有没有对学习php没有太大区别,关键是兴趣。

因胸联盟 发表于 2015-2-11 11:02:54

我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。

冷月葬花魂 发表于 2015-2-18 14:14:53

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

愤怒的大鸟 发表于 2015-2-21 08:57:59

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

蒙在股里 发表于 2015-3-1 13:45:51

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

仓酷云 发表于 2015-3-4 10:47:22

写的比较杂,因为我也是个新手,不当至于大家多多指正。

若天明 发表于 2015-3-4 11:36:19

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

精灵巫婆 发表于 2015-3-15 07:51:07

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

分手快乐 发表于 2015-3-17 10:11:42

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

灵魂腐蚀 发表于 2015-3-19 19:15:41

作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。

金色的骷髅 发表于 2015-3-23 19:54:26

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

变相怪杰 发表于 2015-4-3 09:53:46

曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ;

飘灵儿 发表于 2015-4-7 06:14:21

本文当是我的笔记啦,遇到的问题随时填充

只想知道 发表于 2015-4-7 17:55:03

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

小魔女 发表于 2015-4-13 16:23:47

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

莫相离 发表于 2015-4-15 02:41:30

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

兰色精灵 发表于 2015-4-17 11:52:39

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。
页: [1]
查看完整版本: PHP网站制作之PHP C 架O Data Access Layer 篇...