仓酷云

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

[学习教程] PHP教程之PHP与UML类图: PHP and UML Class Diag...

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:29:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我是根据自己的成长历程来写的,如有不对的还请指正。   这篇短文写的不错,用PHP来注释UML(或反过去说)可以说是一个立异了,经由过程这篇文章,我也发明了一个好站: www.phppatterns.com 。各UML术语的翻译来历于我正在看的《UML用户指南(The Unified Modeling Language User Guide)》一书。

UML(Unified Modeling Language, 一致建模言语)是一种经由过程图的体例暗示软件的机制。实质上它答应咱们经由过程绘图来设计咱们的法式,而且假如有响应的东西,咱们乃至可以从图来直接发生代码。在这篇文章里,咱们未来看看PHP代码若何经由过程利用UML类图(class diagram)的体例体现出来。

咱们将直接入手下手,假定你已具有了UML的常识,并罗列一些PHP代码和它们对应的UML暗示作为例子――但这并非对类图的一个完全的剖析。

假如你还没有接触过UML,在你入手下手浏览前可以增补一些常识,咱们搜集了一些资本列在这篇文章的末尾。

[Inheritance 承继关系]

PHP关头字extends答应一个类(子类)承继于另外一个类(父类)。

<?php
class Senior {

}

class Junior extends Senior {

}
?>


UML体例暗示以下:




请注重,三角形在父类这边。

[Associations 联系关系关系]
联系关系关系(Associations)产生于两个不存在关系但或许需求相互会见的类之间,好比Model(模子)和View(视图),View需求Model供应数据以停止显示。有几种分歧的联系关系类型:

*Aggregation* 聚合

聚合(Aggregation)是当一个类(上面例子为Model)会见另外一个类(上面例子为Dao)时,第二个类(Dao)或许已被内部实例化($dao)了 。假如第一个对象($model)“挂了”,第二个对象($dao)依然会持续“在世”。这在触及数据会见对象(data access objects)时很罕见,它们或许会被传递给良多对象,这些对象就算“挂了”数据会见对象也仍然“健在”。

这类体例正常地注释了第一个类(Model)掌握第二个类(Dao)的一局部。

举个例子:

<?php
class Dao {
function getSomething() {

}
}

class Model {
var $dao;
function Model (& $dao) {
$this->dao=& $dao;
}

function doSomething () {
$this->dao->getSomething();
}
}

$dao=new Dao;

$model=new Model($dao);
$model->doSomething();
?>


在UML中暗示为:




空心菱形在掌握类这边。


*Composition* 组合

组合(Composition)产生于当于一个类(例子中为View)将另外一个类(例子中为LinkWidget)实例化,如许以后者(View)“挂了”时后者()也随着“玩完”的情形。

换句话说,第一个类掌握了第二个类的全体。
上面是PHP中的一个例子:

<?php
class LinkWidget {
function Display () {

}
}

class View {
var $linkWidget;
var $page;
function View () {
$this->linkWidget=new LinkWidget;
}

function renderPage () {
$this->page=$this->linkWidget->display()
}
}
?>


在UML顶用下图暗示:




实心菱形在掌握类这边。


[Messages 动静]

动静(Messages)产生于一个类(例子中为View)同其它类(例子中为HtmlUtils)“交换”而不掌握它(HtmlUtils)的实例的时分。这些类之间的关系一样是联系关系关系(association)。

在PHP中凡是产生于操作符 :: 利用的时分。例如:

译注: 我感觉这类体例相似于C++中HtmlUtils类中的成员函数unHtmlEntities()为static的情形,如许就无需实例化HtmlUtils就能够直接经由过程"类名::成员函数名"的体例(HtmlUtils::unHtmlEntities())来挪用了。

<?php
class HtmlUtils {
function unHtmlEntities ($str) {
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($str, $trans_tbl);
}
}

class View {
function renderPage {
$text=HtmlUtils::unHtmlEntities($text);
}
}
?>



这将暗示为:



该动静从View发给HtmlUtils.(单向发送)

一样,动静也能够双向发送。

<?php
class Debug {
function display () {
echo ($this->errorMsg);
}
}

class SomeClass {
var $errorMsg='This is an error message';
function someFunction () {
if ( DEBUG == 1 ) {
Debug::display();
}
}
}

define ('DEBUG',1);
$someClass= &new SomeClass;
$someClass->someFunction();
?>





[输入信息: "This is an error message"]

这里 SomeClass 发送一个动静给 Debug,Debug 会见了SomeClass 的 $errorMsg 属性。

[Resources 资本]
Introduction to UML from the Object Management Group
Posideon UML - a tool for drawing UML diagrams and generating Java (sadly no PHP), the community edition being free to use. Based on Argo UML, an open source project.
Object Mentor on UML
A UML Reference Card  就是管理员可以编辑,删除,回复 等功能,。加入管理员功能要加入登陆系统,慢慢你会想在线添加管理员,慢慢你会让自己的作品更漂亮些,慢慢1个完整的留言板就会出来了,
变相怪杰 该用户已被删除
沙发
发表于 2015-2-16 04:55:39 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
不帅 该用户已被删除
板凳
发表于 2015-3-4 23:59:20 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
地板
发表于 2015-3-5 03:00:56 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-3-11 22:44:29 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
透明 该用户已被删除
6#
发表于 2015-3-19 15:12:33 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
爱飞 该用户已被删除
7#
发表于 2015-3-23 09:09:48 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
再现理想 该用户已被删除
8#
发表于 2015-3-24 01:36:09 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-24 10:51:14 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
海妖 该用户已被删除
10#
发表于 2015-3-26 23:37:50 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
谁可相欹 该用户已被删除
11#
发表于 2015-3-31 19:25:07 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
小魔女 该用户已被删除
12#
发表于 2015-4-1 08:08:30 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
只想知道 该用户已被删除
13#
发表于 2015-4-3 23:35:21 | 只看该作者
做为1门年轻的语言,php一直很努力。
因胸联盟 该用户已被删除
14#
发表于 2015-4-12 13:54:01 | 只看该作者
当然这种网站的会员费就几十块钱。
若相依 该用户已被删除
15#
发表于 2015-4-12 15:23:57 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
兰色精灵 该用户已被删除
16#
发表于 2015-6-7 01:01:44 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
再见西城 该用户已被删除
17#
发表于 2015-6-27 00:43:00 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
飘飘悠悠 该用户已被删除
18#
发表于 2015-7-28 09:13:15 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
活着的死人 该用户已被删除
19#
发表于 2015-9-27 20:45:32 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
蒙在股里 该用户已被删除
20#
发表于 2015-10-8 02:53:12 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-23 09:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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