仓酷云

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

[学习教程] PHP网页设计用准确的小汽车对象进修和熟习类的概念...

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

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

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

x
《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)对象|概念   良多书讲到类总喜好拿小汽车来做例子,然而有些例籽实在是又臭又烂误人后辈,哄人财帛,毁人出息,弱智初级到瞎编一个甚么 set_color()函数来教人。其实是白白糟塌了好器材。明天在phpx.com又看到一个受益者,不由得花了两个小时写了这个教程。

闲话少说,咱们来正派的,咱们的小车可不是随意让人图图色彩就完了(只能图色彩的是废车)。咱们的这个小车不仅可以各处乱跑,并且设备了初级GPS全球定位体系,油表,里程表。因为利用了面向对象的手艺,把握如许的一部小汽车一点都不难。

举例子起首要供应一些后台资料。咱们有一辆小汽车,可以在一个具有xy坐标的地图上依照西北东南偏向恣意的行驶,你可以设定小车行驶的偏向和间隔,小车会向你报告请示它的坐标地位。

其实进修类应当和咱们进修其它事物一样,从进修利用入手下手,然后再进修他的道理。所以咱们先来熟习一下若何准确驾驶如许的一个小汽车:


<?php
$startPoint = & new Position(3,9); //初始一个起点坐标x=3,y=9

$myCar = & new Car(500,$startPoint); //我失掉一个新的小车,新车初始燃油 500 升,动身地址$startPoint。

$myCar->setHeading('s'); //给小车设定偏向 s:北方 n:南方 w:东方 e:西方。

if($myCar->run(100)) //然后让小车跑100千米,假如顺遂完成义务显示燃油量。假如前功尽弃,咱们显示警报信息。
{
print('<br><b>小车一切正常,今朝还有燃油:'.$myCar->getGas().'</b>');//取得燃油数
}
else
{
print('<br><b>小车出成绩了: '.$myCar->getWarning().'</b>');//显示警报信息
}

$myPosition=$myCar->getPosition();//取得小车以后的地位

print('<br>我的小车如今<br> X:'.$myPosition->getX().'Y:'.$myPosition->getY());//显示小车的坐标地位
?>
先给本人制作一个小汽车,而且给他设备上一个定位对象 Position。 然后设定偏向, 然后让小车奔驰。 最初反省并输入小车的方位。 庞杂么?很难了解吗? 固然这里咱们用到了两个对象(类):Car 和 Position 然而我信任即便是初学者也不会感觉下面的代码很坚苦。

咱们学会若何开车了今后,再来细心看一看这个小车对象是如何任务的。界说一个对象其实很复杂只需求 用一个关头字class 和一对{}就能够了,所以咱们如许界说这两个对象:

class Car {}
class Position{}

固然,仅仅如许的两个类甚么也做不了,咱们还需求给他们增添一些功效,先从小汽车入手下手,咱们需求可以给小车设定偏向而且让小车奔驰所以咱们增添两个办法,也就是2个函数只不外这两个函数包括在小车对象内只要经由过程小车对象才可使用。

setHeading()
run()
class Car
{
function setHeading($direction)
{

}

function run($km)
{

}
}

出格提醒:设计一个优秀的类的诀窍是从若何利用它下手,也就是说先思索这个对象应该有哪些办法,而不是先肯定它有哪些属性。
为了更好的懂得小车的情况咱们还需求这些办法:
getGas() 取得小车以后的燃油数
getPosition() 取得小车以后的地位
getWarning() 警报信息
为了完成这些功效咱们的小车还需求本人的油表,警报动静,和定位仪。咱们把这些也添加到 Car 类中,同时咱们还给这个类增添了一个初始化的函数 这个函数名字和类的名字一样,如许就有了一个大体的框架。


<?php
class Car
{
/**
* 小车的汽油量
*
*@var
*@access
*/
var $gas;

/**
* 里程纪录
*
*@var
*@access
*/
var $meter;

/**
* 车的地位(由GPS主动掌握)
*
*@var Object position
*@access private
*/
var $position;

/**
* 动员机每1千米耗油量,这个车是0.1升
*
*@var Integer
*@access private
*/
var $engine=0.1;

/**
* 警报信息
*
*@var
*@access
*/
var $warning;

/**
小车的初始化。新车进场固然要
1、加汽油。
2、里程表归零。
3、排除警报信息。
4、设定动身地位。
*/
function Car($gas,&$position)
{
$this->gas= $gas; //加汽油
$this->meter = 0;
$this->warning =''; //排除警报信息
$this->position = $position; //设定动身地位
}

function getWarning() //前往警报信息
{
return $this->warning;
}

function getGas() //前往汽油表指数
{
return $this->gas;
}

function &getPosition()
{
return $this->position; //前往以后小车的地位
}

function setHeading($direction='e')
{

}

/**
* 开动小汽车
*@access public
*@param INT 千米数
*/
function run($km)
{

}

}
?>
这时候候最关头的两个办法 setHeading 和 run 就变得复杂了,因为小车设备了 Position 对象 $this->position, 所以关于坐标定位的工作它也不必管了, 交给 Position 对象好了, 他本人只需办理好本人的油表,里程表就能够了。完成今后的 Car 类酿成这个模样了:


<?php
class Car
{
/**
* 小车的汽油量
*
*@var
*@access
*/
var $gas;

/**
* 里程纪录
*
*@var
*@access
*/
var $meter;

/**
* 车的地位(由GPS主动掌握)
*
*@var Object position
*@access private
*/
var $position;

/**
* 动员机每1千米耗油量,这个车是0.1升
*
*@var Integer
*@access private
*/
var $engine=0.1;

/**
* 警报信息
*
*@var
*@access
*/
var $warning;


/**
小车的初始化。新车进场固然要
1、加满汽油。
2、里程表归零。
3、排除警报信息。
4、设定动身地位。
*/
function Car($gas,&$position)
{
$this->gas= $gas; //加满汽油
$this->meter = 0;
$this->warning =''; //排除警报信息
$this->position = $position; //设定初始地位
}

function getWarning() //前往警报信息
{
return $this->warning;
}

function getGas() //前往汽油表指数
{
return $this->gas;
}

function &getPosition()
{
return $this->position; //前往以后小车的地位
}

function setHeading($direction='e')
{
$this->position->setDirection($direction); //由于利用了Position 对象,小汽车不需求本人来费心XY坐标值了,交给Position 对象吧。
}

/**
* 开动小汽车
*@access public
*@param INT 千米数
*/

function run($km)
{
$goodRunFlag = true;//是不是胜利完成义务。
$maxDistance = $this->gas/$this->engine; //小车可以跑的最大间隔。

if(($maxDistance)<$km)
{
$this->warning = '没有汽油了!';//设定正告信息,能跑多远就跑多远吧。
$goodRunFlag = false;//然而义务一定完成不了。
}
else
{
$maxDistance=$km; //没有成绩,完成义务今后就能够停上去歇息了。
}
$this->position->move($maxDistance);//在座标上挪动由Position对象来完成,小汽车只需担任本人的油耗和千米表就能够了。
$this->gas -= $maxDistance*$this->engine;//损耗汽油
$this->meter += $maxDistance; //增添千米表计数
return $goodRunFlag;
}
}
?>
讲到这里我想我的这篇文章也该停止了。别焦急,我固然还记得 Position 类还没有完成,然而有了下面小汽车的例子 Position 应当就十分复杂了, 假如你了解了这个小汽车的类, 如今就是你一展身手的时分了, 你来完成这个Position 对象吧, 我信任你可以完成它(其实这恰是面向对象和封装的美好的地方)。你需求记住先从Position 的办法入手下手设计好比:


getX()
getY()
move()
setDirection()
所谓类就是指某一类的事物,它可所以详细的(Car)也能够是笼统的(Position),咱们经由过程封装简化了利用和操作就像咱们利用电视,手机一样一点都不庞杂。

一篇好的入门教程应当

活泼真实的例子。
不仅供应了准确的概念,在变量和函数定名,函数封装和挪用上也值的进修。
即使你熟习了面向对象编程今后也不会以为现在的例子有甚么不当的地方。
假如你读完教程下手的话必定可以深入体味到教程的美好的地方,大大削减了走弯路的时机。
好的代码是可以被人像书一样读懂,你以为呢?
  我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
兰色精灵 该用户已被删除
沙发
发表于 2015-2-16 04:55:39 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
深爱那片海 该用户已被删除
板凳
发表于 2015-3-1 22:00:26 | 只看该作者
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
小女巫 该用户已被删除
地板
发表于 2015-3-3 14:54:00 | 只看该作者
做为1门年轻的语言,php一直很努力。
活着的死人 该用户已被删除
5#
发表于 2015-3-11 11:23:41 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
因胸联盟 该用户已被删除
6#
发表于 2015-3-17 18:10:54 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
admin 该用户已被删除
7#
发表于 2015-3-21 10:10:39 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
若天明 该用户已被删除
8#
发表于 2015-3-24 01:36:09 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-31 19:25:07 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
金色的骷髅 该用户已被删除
10#
发表于 2015-4-7 13:12:10 | 只看该作者
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
飘灵儿 该用户已被删除
11#
发表于 2015-4-12 13:54:01 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
透明 该用户已被删除
12#
发表于 2015-4-12 15:23:57 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
13#
发表于 2015-4-26 22:10:36 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
灵魂腐蚀 该用户已被删除
14#
发表于 2015-4-28 16:21:31 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
谁可相欹 该用户已被删除
15#
发表于 2015-5-1 07:07:59 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
愤怒的大鸟 该用户已被删除
16#
发表于 2015-5-3 21:54:56 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
海妖 该用户已被删除
17#
发表于 2015-6-17 22:23:10 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
简单生活 该用户已被删除
18#
发表于 2015-6-26 13:25:40 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
乐观 该用户已被删除
19#
 楼主| 发表于 2015-7-12 04:14:24 | 只看该作者
爱上php,他也会爱上你。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-7 09:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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