深爱那片海 发表于 2015-2-4 00:26:54

PHP教程之PHP画图对象布局设计与使用实例

告诉你了一个方式,但是缺少努力这一环节,那也是白搭。对象|设计|使用实例   本文次要论述若何在PHP中完成画图对象的布局设计。

在PHP中小型的数据布局可由复杂类来完成,即由复杂的数据和操作来界说。但跟着数据布局的庞杂化,复杂类不克不及知足完全表现全部数据布局的需求,由此需求利用类的布局,一句话来描写就是类中的成员也由类来组成。这是面向对象设计办法完成对数据封装、信息埋没及代码重用的扩大体例,而另外一种体例就是类的承继。
本文次要会商类的布局。

以画图为例,咱们来看关于几何图形的复杂例子。
几何图形包括一系列的点,线,面等,而由一些几何正义可知点是个中最根基的组成元素。所以,咱们以点作为设计的根基对象,由此来描写线和面临象。用来举例申明类布局的完成体例。

剖析
假定点位于某一立体内,在肯定了坐标系以后(即给定了原点和坐标轴及其正偏向),咱们即可以用坐标地位来描写这个点,如图:

直线是由两点来肯定的,所以由肇端和终止两点即可肯定一条线段。如图:

面 ――(无妨举例)矩形,由两条平行对边组成,且相邻双方夹角为90度。画图时发明,矩形可由对角的两点独一肯定。如图:

基于上述剖析,咱们入手下手设计:点类,线类,面类。线和面类中的数据成员包括点类,这就是类的布局,从而由复杂类组成庞杂类。
设计以下:

从另外一个角度思索,假如不采取类的布局设计办法,一个没有条理的类多是如许的,以Line为例:

一个复杂类,设法是:成员变量代表肯定此线段的两个点的坐标(x1,y1),(x2,y2)。

对照两种设计,Line_Bad带来的了局是保护和更改方便,由于没有条理。起首需求保护的成员变量多,四个;若需求设置线段中点的色彩,Line_Bad则需求增添成员函数;若需求将这直线改成三维空间的,Line_Bad则需求增添成员变量,然后修正一切的成员函数。而用Line类则防止了如许的费事,设置色彩只需挪用Point的办法就能够完成;而改成三维空间,只需增添Point的属性(z坐标)就能够了。而Line类自己几近不必做任何修改(与PHP的画图函数有关),省了很多保护修正的力量吧 :)。



如今画图的基本有了,咱们就来举一个实践的使用例子。

在很多统计中常需求用图例来显示各类统计了局,咱们就用下面设计的画图类来完成柱状图的显示。

剖析:
柱状图次要由坐标轴和柱体组成。坐标轴可由Line类显示,柱体可由Rectangle类显示。

显示坐标轴以下:


function DrawAxes()
{
$vertspan=200;

$p1=new Point(10,$vertspan+2.5);
$p2=new Point(10,2.5);

$VerticalAxis=new Line($p1,$p2);
$VerticalAxis->Draw();

$p1=new Point(7.5,$vertspan);
$p2=new Point(370,$vertspan);

$HorizontalAxis=new Line($p1,$p2);
$HorizontalAxis->Draw();

}





显示柱体以下:
function Plot($arr_barTotal)
{
$vertspan=200;
//显示比例
$scaleHeight=190;
//肯定柱状中最大值
$maxTotal=Max1(&$arr_barTotal);
//肯定柱体个数
$total=count($arr_barTotal);

//轮回显示柱状体
$dx=15;
$x=10+$dx;

for($i=0;$i<$total;$i++)
{
$rectHeight=($arr_barTotal[$i]/$maxTotal)*$scaleHeight;

$p1=new Point($x,$vertspan-$rectHeight);
$p2=new Point($x+$dx,$vertspan);

$CurrRect= new Rectangle($p1,$p2);
$CurrRect->Draw();

$x+=2.0*$dx;
}
}


主法式:
1) 肯定显示数据。
2) 显示坐标轴。
3) 显示柱状体。


//main
$arr_barTotal=array('1','3','34','23','5','25','7'); //显示数据
DrawAxes(); //画坐标轴
Plot($arr_barTotal); //画柱状体


如许主法式框架就完成了:D
后果以下。

如需进一步丑化任务,人人可自行添加基本显示类中响应的属性及响应的成员函数,这里就不多述了。

附:由于篇幅成绩,没有附上源码。
本文中一切代码可在http://10.31.172.7/cgi-bin/cvsweb.cgi/kai/graph/中取得,并已在php4.0.2+Gd1.62情况下调试经由过程。
可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。

深爱那片海 发表于 2015-2-4 13:08:58

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

变相怪杰 发表于 2015-2-7 19:04:55

先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。

爱飞 发表于 2015-2-23 00:46:33

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

冷月葬花魂 发表于 2015-3-5 16:32:25

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

飘灵儿 发表于 2015-3-7 06:50:40

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

柔情似水 发表于 2015-3-21 07:59:10

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

愤怒的大鸟 发表于 2015-3-26 19:42:21

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

山那边是海 发表于 2015-4-5 17:54:35

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

透明 发表于 2015-4-7 18:05:26

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

飘飘悠悠 发表于 2015-4-16 17:09:25

真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,

老尸 发表于 2015-4-21 05:11:39

学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。

灵魂腐蚀 发表于 2015-4-23 02:32:46

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

再见西城 发表于 2015-4-23 22:57:57

做为1门年轻的语言,php一直很努力。

莫相离 发表于 2015-4-25 16:53:07

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

海妖 发表于 2015-4-26 19:02:36

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

谁可相欹 发表于 2015-4-27 14:20:54

建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。

小魔女 发表于 2015-5-12 12:20:27

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

金色的骷髅 发表于 2015-6-28 03:38:35

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

乐观 发表于 2015-6-30 07:09:49

兴趣是最好的老师,百度是最好的词典。
页: [1]
查看完整版本: PHP教程之PHP画图对象布局设计与使用实例