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^)。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。 先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 写的比较杂,因为我也是个新手,不当至于大家多多指正。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了, 做为1门年轻的语言,php一直很努力。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎 兴趣是最好的老师,百度是最好的词典。
页:
[1]