PHP开发入门教程之面向对象_php技巧

PHP是弱变量的脚本语言,也就是说你无需先定义,这一点很灵活。也可以给予很大的自由度,但对于程序来说,自由并非好事。

  因为给予后期维护人员阅读带来很大的麻烦。

  下面来进入我们第一个程序:

  1.php

////////////////////
<?class helloWorld{
 var $hellow_str = "Hello World!";
 function helloWorld(){
  echo $this->hellow_str;
 }
}
$p = new helloWorld;
?>
////////////////////

  很明显,这是一个类,很简单的类,只有一个构造函数。目的就是输出"Hello World";首先我们定义了一个类成员变量,通过一个特殊的$this对象,输出该变量,oop思想我不是很精,仅仅在于php开发方面用到,其他的也只是借鉴,但是我想对于php开发者已经足够了。

  接下来,解释下什么是$this对象,从这点我们先要知道什么是类。

  类,可以解释为一群相同的群体,在类中的成员变量,如上面的$hellow_str可以看作是这个群体的独特的特征,比如,桌子群体是一个
类,桌子都有桌面,桌脚,这些“都有”的东西,就是桌子全体的共有特征,在程序类里面我们就可以定义其为 桌子类的一个成员变量。

////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
}
///////////

  同样,在桌子世界里,他们也有共同的动作,比如移动[也许你现在就在推桌子^^],也可能我们要把桌子的面子放大点,一样,这个就是桌子群提的共有方法了,[和特征近似哦,不过这是动作罢了]。让我们把这个共同特征加到类中去吧。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){
  #....
 }
 function largen(){
  #...
 }
}///////////////

  知道了上面的,那么接下来就很好理解什么是$this对象了,没有错,他就是桌子群中的一个特定的对象,如果阁下还不能理解,那么,
我们接着解释。

  如果,我们现在要对一张桌子进行整改,比如,我们想把桌子面积做的更大,那么,我们针对的就不是一群桌子,而是这个要整改的特定的桌子,这是个个体!所以,我们要把这个类进行“实例化”进行精确定位。因为,其他桌子我们不需要整改。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
$d = new desktop;#“实例化,这个时候我们就是针对一个特定的桌子拉!
$d->largen();#哈哈,把这个特定桌子面放大点。其实$d = $this;明白吗,$d就是那个特定的桌子,$d->largen就是用那个特定桌子[桌子群大家都有的变大方法]把特定桌子面放大了点。
///////////////

  原来,$this就是指一个特定桌子呀,哈哈,明白了,原来类是大家都有的属性,方法的集合,而一个特定的对象,就是这个群体中的一个个体,既然是他们当中的个体,当然拥有群体所拥有的共同特征和方法拉。

  成员变量,成员方法[成员函数],实例化,大家都知道了。

  但是我桌子虽然想变大,可是我还不知道桌子开始有多大啊,这可能吗,怎么办呢?

  接下来,我们隆重推出 构造函数 来拉。要说到构造函数啊,话多啊,就不多说了,他就是给我们桌子面和桌子腿确定大小的。

////////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
////////////
看到了吧,我把桌子定义了大小和长度哦
//////////

  聪明的你,一定想立即实例化了吧,如果我开始在定义成员变量里就给值了,那不是说所有桌子都一样大吗?

//////////////
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
 }
}
$d = new desktop;
$d->desktop();
////////////////////

  可是结果却是:Call to a member function desktop() on a non-object in

  倒霉,肯定是作者在骗点击,bs这小样,TT.

  其实是我错了,我知道错了。原来 我们刚才添加的函数

function desktop(){
 $this->desktop = 100;
 $this->baluster = 100;
}

  是个构造函数,什么是构造函数呢,哎呀,原来构造函数是类特有的函数,在类被实例化后,类会第一步自动执行构造函数,它在为类开辟内存单元嘛。

  为了验证是不是它一开始就执行,大家请把目光放到本教程第一个代码上去,嘎嘎,您看到了把,一个和类名一样的方法,一个构造函数,在我们实例化后就已经输出代码了吧,这就证明我还没有说错呢。

  好了,回到我们的桌子世界里,你发现了,我们这个时候所有桌子面和腿都是100了。

  2.php

  执行代码

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop(){
  $this->desktop = 100;
  $this->baluster = 100;
  echo "我们桌子家族命令大家把桌子面子都给我统一在".$this->desktop."大小!<br />";
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
  echo "7~,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>

  小桌子,逃离了桌子家族,因为,我们的面子没小桌子这nb大了。桌子老长老看不下去了,小样,看我的。

//////////////
<?
class desktop{
 var $desktop;#桌子面;
 var $baluster;#桌子腿;
 function desktop($desktop){
  $this->desktop = $desktop;
  $this->baluster = 100;
  echo "我们桌子家族命令大家把桌子面子都给我统一在".$this->desktop."大小!<br />";
 }
 function move(){
  #....
 }
 function largen(){
  $this->desktop++;#放大桌子面
  echo "7~,小桌子我今天改造了,不鸟你们拉,哈哈, 我现在面子可比你们大,我有".$this->desktop."嘎嘎";
 }
}
$d = new desktop;
$d->largen();
?>

  小桌子,左转转,右转转 看了半天,逛累了,觉得自己现在也进化了,该看看新同类了 于是;桌子变身执行后,发现......

/////
$d = new desktop(101);
////

  我tmd还是一张小桌子。

时间: 2024-11-02 01:38:26

PHP开发入门教程之面向对象_php技巧的相关文章

PHP开发入门教程之面向对象

PHP是弱变量的脚本语言,也就是说你无需先定义,这一点很灵活.也可以给予很大的自由度,但对于程序来说,自由并非好事. 因为给予后期维护人员阅读带来很大的麻烦. 下面来进入我们第一个程序: 1.php ////////////////////<?class helloWorld{ var $hellow_str = "Hello World!"; function helloWorld(){ echo $this->hellow_str; }}$p = new helloWo

Yii PHP Framework实用入门教程(详细介绍)_php技巧

说明:因为最近工作工作关系,需要开发一个在Linux下运行的Web Application,需要对现在比较流行的一些PHP框架做一个了解和评估,下面的这篇文章是笔者最近学习一个比较新的PHP Framework的一点经历和操作步骤,因为官方的手册写得比较晦涩(特别是中文的),曾经尝试遍读它那个手册再动手,读了一大半发现仍无法理解,于是干脆先下手为强了,因而也就有了下面的文章. 介绍Yii 是一个基于组件.纯OOP的.用于开发大型 Web 应用的高性能 PHP 框架.它将 Web 编程中的可重用性

PHP入门教程之数学运算技巧总结_php技巧

本文实例讲述了PHP入门教程之数学运算技巧.分享给大家供大家参考,具体如下: Demo1.php <?php // $a = '5'; // $b = 7+$a; // echo $b; $a = 'a'; $b = 7+$a; echo $b; ?> Demo2.php <?php $a = 10.0; //is_int -- 检测变量是否是整数 if(is_int($a)) { echo '通过'; }else{ echo '不通过'; } ?> Demo3.php <?

网页游戏开发入门教程三(简单程序应用)_php实例

网页游戏开发入门教程二(游戏模式+系统)http://www.jb51.net/article/20724.htm 一.选择开发语言 后台:java .net php 前台:flex javascript ajax 数据库:mysql mssql 用哪种组合,真的不重要.重要的是时间和成本.复杂的地方在数据的交互和完善,而不在技术或效果的实现.往往遇到一些问题.比如地图如何编?人物移动如何实现?其实这些问题从技术上实现都比较容易.难在实现后,数据如何交互.没有解决数据交互的问题,实现这些技术点的

一看就懂的Android APP开发入门教程

  这篇文章主要介绍了Android APP开发入门教程,从SDK下载.开发环境搭建.代码编写.APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,需要的朋友可以参考下 工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发,开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣.于是凌晨一点睡不着写了第一个android程序HelloAndroid,po出

PHP扩展开发入门教程

 这篇文章主要介绍了PHP扩展开发入门教程,本文讲解了使用C语言在Linux系统下开发一个PHP扩展应该具备的最基本知识,需要的朋友可以参考下     PHP扩展开发 我准备在此系列博文中总结我有关PHP扩展开发的学习和感悟,力图简单清晰地描述在Linux系统下开发一个PHP扩展应该具备的最基本知识.水平较低,难免有错误,望指出. 准备工作 首先要获取一份PHP源码(可以从Github上签出,或者到官网上下载最新的稳定版),然后编译之.为了加快编译速度,我们推荐禁用所有额外的扩展(使用--dis

微信小程序开发入门教程

在这篇微信小程序开发教程中,我们将向你介绍快速试用和体验微信小程序开发工具和官方示例Demo. 本系列教程将引导你完成如下任务: 下载微信web开发者工具和小程序官方Demo. 添加小程序示例Demo到项目 体验小程序常用组件及接口   第一部分 下载开发者工具和官方Demo   微信小程序开发者工具 为了帮助开发者简单和高效地开发微信小程序,微信官方推出了全新的微信小程序开发者工具,该工具集成了开发调试.代码编辑及程序发布等功能. 下载地址为  windows 64 . windows 32 

PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)_php技巧

本文实例讲述了PHP面向对象的特性.分享给大家供大家参考,具体如下: Demo1.php <?php header('Content-Type:text/html; charset=utf-8;'); //创建一个电脑类 class Computer { //什么叫做类内,就是创建类的花括号内的范围叫做类内,其他地方则类外. //public 是对字段的公有化,这个字段类外即可访问,赋值和取值 public $_name = '联想'; } $computer = new Computer();

joomla组件开发入门教程_php实例

本文讲述了joomla组件开发知识点.分享给大家供大家参考,具体如下: 在你进行编码之前,有一些文件和文件夹需要创建和一些查询语句需要运行.你不但可以创建组件而且不用额外的配置就可以尝试不同的特性.你也可以看到Joomla!组织和访问组件方法的概况.最后,你会像其它组件一样加入工具栏. Joomla!组件的结构 Joomla!的所有组件都遵守指定的命名约定.每个系统组件都有唯一的名字,名字不要包括空格.代码分成两个文件夹,文件夹以com_开头,紧接着就是组件的名字.因此,你要创建两个相同名字的c