classphp⽤变量赋值类_PHP类(Class)⼊门教程
对类的摸索~~俺⽤了半年时间才⼤概理解类的作⽤和实现。主要是没有⼀篇能让我理解的⽂章(之前没接触过任何OO的东西)。
以我的观点来说说PHP中的Class,⽤于表达的语⾔都是⾮正式的语⾔,也不能确定是否正确。
建⽴⼀个类很简单。
class my_class{}
>
类到底⼲什么呢?很多⼈都说是什么⿊匣⼦,我在这⾥称它为⼀个独⽴的整体。我们只知道类名,⽽不知道⾥⾯有什么东西。那么,该如何使⽤这个类呢?
⾸先:要知道它⾥⾯是否定义了公共的变量--专业术语上称它为“属性”。
其次:要知道它⾥⾯定义了什么函数--专业术语中称它为“⽅法”。
我都被这些专业术语搞糊涂了,所以⼲脆不理它了。
类中的如何定义公共变量,它有什么作⽤呢?
很简单,我们来扩充 my_class 类
class my_class
{
var $username;
}
>
看上⾯很简单,我们定义了⼀个公共的变量,只是⽤ var+空格+普通变量名 构成。它有什么⽤呢?考虑⼀下函数中,如果我们要访问函数外的变量,是不是要先 global ⼀下呢?这个想实现的效果也是如此,它是想让这个类中的所有函数都能访问它,⽽它区别于函数的⼀个地⽅,是类的外部也可以访问这个变量,我随后再讲外部如何访问它。还有⼀个区别,不能⽤复杂的语句给这个变量赋值(具体的等理解了类以后⾃⼰去看规则)。给它⼀个默认值
class my_class
{
var $username="深空";
}
>
OK,定义了⼀个公共的变量了,接下来定义⼀个函数(也就是所谓的“⽅法”)。
class my_class
{
var $username="深空";
function show_username()
{
//函数:⽅法->要实现的效果
}
}
>
这个定义函数跟普通的定义函数形式上没什么区别了。简单就好,定义⼀个打印 $username 的函数:
class my_class
{
var $username="深空";
function show_username($username)
{
//打印
echo $username;
}
}
>
到这⾥可能某些⼈开始迷糊了,呵呵,最关键的就是这⾥了,看清楚了。现在有三个 $username 了。到底哪个是哪个啊~~
函数所带的⾏参,不⽤解释了吧?这个函数功能就是打印⾏参所接收的值,也就是如果:
show_username("猪头深空");
>
那么它将打印 “猪头深空” ,就这么简单。
怎么样访问这个函数?肯定不是我上⾯说的那样直接 show_username(”猪头深空”); 了,别急,类有类的⼀套。如下:
$Name=new my_class();
>
这样就初始化上⾯的那个 my_class 的类了,并把这个对象赋给变量 $Name ,你可以这样理解,这个变量就代表整个类了,呵呵。
使⽤类中的函数:
$Name->show_username("猪头深空");
>
晕了,为什么这么复杂?还要箭头?其实很形象的。本来已经把类给了变量 $Name 了是吧?也就是 $Name 代表了这个类,然后⽤⼀个箭头指向类中的 show_username 这个函数。就是这么简单,也就是说,这个函数是这个类中的,⽽不是其他的函数--你就理解为表⽰⼀个区别吧,呵呵。
试试看哦,打印出 “猪头深空” 这四个字了。你说为什么要这么复杂?⽤函数不是也能实现么?我说,这么简单的你当然看不出好处了,我们继续扩充。
还有⼀个疑问:刚才说的“公共的变量”怎么⼀点⽤处都没有呢?为什么这个函数不会⾃动接收这个公共变量 var $username 中的默认值?也就是如果我使⽤:
$Name->show_username($username);
>
会有什么结果呢?答案是没有任何输出。因为你没有给形参 $username ⼀个值。那么该怎么使⽤这个公共的变量?
我们来修改⼀下这个类:
class my_class
{
var $username="深空";
function show_username()
{
echo $this->username;
}
}
>
哇靠,不是吧,这回脸形参都没有了?还多了⼀个$this->,晕了不是,呵呵。其实这也是类的⼀个最⼤的⽅便之处。
$this 的作⽤:访问⼀个公共的变量,或者类⾥⾯的函数。
访问?这么专业?其实就是⽤ $this->username 来代替 var $username ⽽已拉,$this ⽤来说明它是公共的。可以访问的,函数外部的东西。
试试看:
$Name->show_username();
>
看到了吧,终于打印 “深空” 这两个字了,娃哈哈。
我不打印“深空”这两个字,我要打印“猪头深空”,怎么办?很简单,我们给这个公共变量重新赋值拉。服
了你了。
$Name->username="猪头深空";
>
这个能明⽩意思么?$Name->username 表⽰的是类⾥⾯的这个公共变量。等号赋值不⽤我解释了。
我们再来打印看看
$Name->show_username();
>
哈哈,终于打印“猪头深空”了。不错吧,很⽅便吧,不⽤形参也能任意修改打印值哦~~。
不过单单打印⼀个名称也太没意思了,我们说点欢迎的话吧,来扩充⼀下这个类,创建⼀个名叫 Welcome 的函数:
class my_class
{
var $username="深空";
function show_username()
{
echo $this->username;
}
汽车油表怎么看
function Welcome()
{
}
}
>
恩,实现什么功能好呢?简单点吧,就实现在名字前⾯有 “欢迎” 两个字好了
class my_class
{
var $username="深空";
function show_username()
{
echo $this->username;
}
function Welcome()
{
echo "欢迎";
$this->show_username();
}
}
>
第⼆次看到 $this 了吧?$this->show_username(); ⼲什么⽤呢?其实它就是调⽤ show_username 这个函数,⽤ $this 来表⽰这个函数在类中并且和 Welcome 函数平⾏,⽽不是在其他地⽅(⽐如Welcome函数中)。
Welcome 函数实现的功能很简单,⾸先打印两个字”欢迎”,然后接下去执⾏ show_username 函数,打印名字。
来试试这个函数吧:
$Name->Welcome();
>
看到了吧,打印出“欢迎深空”这四个字了。
可是我要打印“欢迎猪头深空”,怎么办?我服了你了,我们给公共变量 var $username ⼀个值吧:
$Name->username="猪头深空";
>
接下去打印欢迎语:
$Name->Welcome();
>
嘿嘿,终于打印“欢迎猪头深空”了。
怎么样?明⽩了类的⽤法了么?好处在于能够调⽤类中的任意函数,只要⽤ $this 指出来,可以改变⼀个公共变量的值,可以在类中的函数中使⽤这个公共变量。………多了去了,它的应⽤等待你去发现了。
下⾯是⼀篇很早的⽂章了,建议⼤家也可以看看。
⽤正确的⼩汽车对象学习和熟悉类的概念
很多书讲到类总喜欢拿⼩汽车来做例⼦,但是有些例⼦实在是⼜臭⼜烂误⼈⼦弟,骗⼈钱财,毁⼈前程,低级到瞎编⼀个什么
set_color()函数来教⼈。实在是⽩⽩糟踏了好东西。今天在phpx⼜看到⼀个受害者,忍不住花了两个⼩时写了这个教程。
闲话少说,我们来正经的,我们的⼩车可不是随便让⼈图图颜⾊就完了(只能图颜⾊的是废车)。我们的这个⼩车不但能够到处乱跑,⽽且装备了⾼级GPS全球定位系统,油表,⾥程表。由于使⽤了⾯向对象的技术,驾驭这样的⼀部⼩汽车⼀点都不难。
举例⼦⾸先要提供⼀些背景材料。我们有⼀辆⼩汽车,可以在⼀个拥有xy坐标的地图上按照东南西北⽅向任意的⾏驶,你可以设定⼩车⾏驶的⽅向和距离,⼩车会向你汇报它的坐标位置。
其实学习类应该和我们学习其它事物⼀样,从学习使⽤开始,然后再学习他的原理。所以我们先来熟悉⼀下如何正确驾驶这样的⼀个⼩汽车:
$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公⾥,如果顺利完成任务显⽰燃油量。如果半途⽽废,我们显⽰警报信息。
{
⼩车⼀切正常,⽬前还有燃油:'.$myCar->getGas().'');//获得燃油数
print('⼩车⼀切正常,⽬前还有燃油:'.$myCar->getGas().'
}
else
{
⼩车出问题了: '.$myCar->getWarning().'');//显⽰警报信息
print('⼩车出问题了: '.$myCar->getWarning().'
}
$myPosition=$myCar->getPosition();//获得⼩车当前的位置
print('
我的⼩车现在
X:'.$myPosition->getX().'Y:'.$myPosition->getY());//显⽰⼩车的坐标位置
>
先给⾃⼰制造⼀个⼩汽车,并且给他装备上⼀个定位对象 Position。 然后设定⽅向, 然后让⼩车奔跑。 最后检查并输出⼩车的⽅位。 复杂么?很难理解吗? 虽然这⾥我们⽤到了两个对象(类):Car 和 Position 但是我相信即使是初学者也不会觉得上⾯的代码很困难。
我们学会如何开车了以后,再来仔细看⼀看这个⼩车对象是怎样⼯作的。定义⼀个对象其实很简单只需要 ⽤⼀个关键字class 和⼀对{}就可以了,所以我们这样定义这两个对象:
class Car {}
class Position{}
当然,仅仅这样的两个类什么也做不了,我们还需要给他们增加⼀些功能,先从⼩汽车开始,我们需要能够给⼩车设定⽅向并且让⼩车奔跑所以我们增加两个⽅法,也就是2个函数只不过这两个函数包含在⼩车对象内只有通过⼩车对象才可以使⽤。
setHeading()
run()