php面向对象编程程序设计

<?php教程
/*  PHP面向对象的程序设计
 *
 *  PHP5
 *
 *  数组和对象:都属于PHP的复合类型(一个变量可以存储多个单元)
 *
 *  对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象中
 *
 *  对象的三大特性:封装、继承、多态
 *
 *  面向对象编程(oop) //符合软件工程中的 重用性 灵活性 扩展性
 *
 *  面向对象和面向过程之间的区别
 * 
 * 最小的单位:函数  //面向过程
 * 最小的单位:对象  //面向对象
 *
 *  什么是对象
近来,新浪管理层开始套现,公开消息披露,当年的MBO使得管理层意气风发地成为新浪第一大股东,可到今天,他们已经成为了第二大股东。股权比例相距倒是不大:和第一大股东FMR9.24%的比例只有0.1%的差距。但新浪管理层手上有约定出售股权的协议,如果算上这部分未来可能会抛售的股权,管理层就只剩下5.74%了。新浪的确有可能再次成为一个“无主的公司”。

  这就是新浪作为一家公司,未来的麻烦:盈利模型不清晰,无主的可能性又开始展现。
 * 对象是一个实体
 * 对象:
 *  成员属性==变量//定义对象的外观和状态
 *  成员方法==函数//定义对象的功能
 *
 *  什么是类
 *   分类、类型、自定义类型
 *   
 *   在类中定义这个类型的属性和方法
 *
 *  类和对象之间的一个关系
 *
 *    声明类-->实例化对象(创建对象)-->使用对象
 *
 *
 *  最难得是如何设计出面向对象的程序,而不是面向对象的语法。
 *
 */

?>

原来的成员:
var $name;   //声明人的姓名
var $sex;    //声明人的性别
var $age;    //声明人的年龄
function run(){…….}
改成封装的形式:
private $name;          //把人的姓名使用private关键字进行封装
private $sex;      //把人的性别使用private关键字进行封装
private $age;      //把人的年龄使用private关键字进行封装

  
private function run(){……}  //把人的走路方法使用private关键字进行封装
注意:只要是成员属性前面有其它的关键字就要去掉原有的关键字“var”。
通过private就可以把人的成员(成员属性和成员方法)封装上了。封装上的成员就不能被类外面直接访问了,只有对象内部自己可以访问;下面的代码会产生错误:
class Person
{
//下面是人的成员属性
private $name; //人的名子,被private封装上了
private $sex; //人的性别, 被private封装上了
private $age; //人的年龄, 被private封装上了
//这个人可以说话的方法
function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
//这个人可以走路的方法, 被private封装上了
private function run()
{
echo "这个人在走路";
}
}
//实例化一个人的实例对象
$p1=new Person();
//试图去给私有的属性赋值, 结果会发生错误
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//试图去打印私有的属性, 结果会发生错误
echo $p1->name.”<br>”;
echo $p1->sex.”<br>”;
echo $p1->age.”<br>”
//试图去打印私有的成员方法, 结果会发生错误
$p1->run();
输出结果为:
Fatal error: Cannot access private property Person::$name
Fatal error: Cannot access private property Person::$sex
Fatal error: Cannot access private property Person::$age
Fatal error: Cannot access private property Person::$name
Fatal error: Call to private method Person::run() from context ''

从上面的实例可以看到, 私有的成员是不能被外部访问的, 因为私有成员只能在本对象内部自己访问,比如,$p1这个对象自己想把他的私有属性说出去,在say()这个方法里面访问了私有属性,这样是可以。(没有加任何访问控制,默认的是public的,任何地方都可以访问)
//这个人可以说话的方法, 说出自己的私有属性,在这里也可以访问私有方法

function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
//在这里也可以访问私有方法
//$this->run();
}

因为成员方法say()是公有的, 所以我们在类的外部调用say()方法是可以的,改变上面的代码;

 

 class Person
{
//下面是人的成员属性
private $name;   //人的名子,被private封装上了
private $sex;   //人的性别, 被private封装上了
private $age;   //人的年龄, 被private封装上了
//定义一个构造方法参数为私有的属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age)
{
//通过构造方法传进来的$name给私有成员属性$this->name赋初使值
$this->name=$name;
//通过构造方法传进来的$sex给私有成员属性$this->sex赋初使值
$this->sex=$sex;
//通过构造方法传进来的$age给私有成员属性$this->age赋初使值
$this->age=$age;
}
//这个人可以说话的方法, 说出自己的私有属性,在这里也可以访问私有方法
function say()
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
}
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1=new Person(“张三”,”男”, 20);
$p2=new Person(“李四”,”女”, 30);
$p3=new Person(“王五”,”男”, 40);
//下面访问$p1对象中的说话方法
$p1->say();
//下面访问$p2对象中的说话方法
$p2->say();
//下面访问$p3对象中的说话方法

  $p3->say();
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40

 

<?php
class  user{
 private $shell ;           //用户身份  这里是包含名字 和 权限的二维数组
 private $ob;             //模块对象  例如 财务模块 caiwu
   function __construct($shell){
    $this->shell =  $shell;
   }
   function mannger($ob){
   $this->ob = new  $ob($this->shell);
   }
   function qianguize(){
    $this->shell[name] != '小蜜'? die('!') :'';
    $this->ob = new  mklove($this->shell);
   }
}
class caiwu{
 function __construct($shell){
    if(!in_array('caiwu',$shell[quanxian])) {
      echo($shell[name]."你不可以管理财务哦~!<br/>");
    }else{
  echo $shell[name]."你可以管理财务<br/>";
    }
 }
}
class mklove{
 function __construct (&$shell){
    if(!in_array('mklove',$shell[quanxian])) die('你不可以');
   echo "www.111cn.net";
   $shell[quanxian][]='caiwu';
 }
}
 
/*
 其中user 是用户类
 caiwu  !
*/
$shell  = array(name=> 'fs', quanxian=>array('caiwu','xingzheng','cailiao','mklove'));   
$shell0 = array(name=> 'f', quanxian=>array('cailiao','mklove'))  ;  

 

$jingli = new user($shell) ;                  
$xiaomi = new user($shell0) ;           
 
 
echo "<h4>他们分别试着去管理财务</h4><br/>";
 $jingli->mannger('caiwu') ;           
 $xiaomi->mannger('caiwu') ;          
 

echo "<h4>潜规则后的结果</h4><br/>";
  $xiaomi->qianguize();             
  $xiaomi->mannger('caiwu') ;
?>

 

时间: 2024-09-23 03:28:24

php面向对象编程程序设计的相关文章

《Java 7程序设计入门经典》一1.5 面向对象编程的关键特性

1.5 面向对象编程的关键特性 Java的核心在于面向对象编程(Object-Oriented Programming,OOP).面向对象的方法学是Java不可或缺的一部分.所有的Java程序或多或少都是面向对象的.因为面向对象对Java如此重要,甚至在写一个简单的Java程序前了解面向对象的基本原则都是有用的. 面向对象是解决编程工作的一个强有力的方法.自从计算机发明以来,编程方法学有着很大的变化,这些变化主要是为了适应不断增长的编程复杂度.例如,在计算机刚发明时,编程是通过计算机的前面板(f

《JavaScript面向对象编程指南》——1.5 面向对象的程序设计

1.5 面向对象的程序设计 在我们深入学习JavaScript之前,首先要了解一下"面向对象"的具体含义,以及这种程序设计风格的主要特征.下面我们列出了一系列在面向对象程序设计(OOP)中最常用到的概念: 对象.方法.属性 类 封装 聚合 重用与继承 多态 现在,让我们来进行逐一阐述. 1.5.1 对象 既然这种程序设计风格叫做面向对象,那么它的重点就在于对象.而所谓的对象,实质上是指"事物"(包括人和物)在程序设计语言中的表现形式.这里的"事物"

JAVA程序员必读:基础篇(2)面向对象编程概念

编程|程序|程序员|对象|概念 如果你以前从来没有使用面向对象语言,你需要在开始编写JAVA代码之前先理解这个概念.你需要理解什么是对象.什么是类.对象和类的关系怎样以及使用消息怎样在对象之间进行通讯.本教程的前面部分将描述面向对象编程的概念,而后面的教程将教你怎样将这个概念编成代码. 2.1什么是对象 对象是一些相关的变量和方法的软件集.软件对象经常用于模仿现实世界中我们身边的一些对象.对象是理解面向对象技术的关键.你在学习之前可以看看现实生活中的对象,比如狗.桌子.电视.自行车等等.你可以发

php学习笔记 PHP面向对象的程序设计

复制代码 代码如下: <?php /* PHP面向对象的程序设计 * * PHP5 * * 数组和对象:都属于PHP的复合类型(一个变量可以存储多个单元) * * 对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象中 * * 对象的三大特性:封装.继承.多态 * * 面向对象编程(oop) //符合软件工程中的 重用性 灵活性 扩展性 * * 面向对象和面向过程之间的区别 * * 最小的单位:函数 //面向过程 * 最小的单位:对象 //面向对象 * * 什么是对象 近来,新浪管理层开

VB.NET中的面向对象编程特征

编程|对象 Visual Basic 7也被称作VB.NET,具备了面向对象(OOP)编程语言的所有特征.对于VB编程人员来说,面向对象的概念和面向对象编程方式都不陌生.       如果问一个面向对象程序设计高手什么是面向对象程序设计语言?他可能会说出一大堆诸如类.接口.消息隐匿.封装.继承.多态性这样的名词,这些名词听起来都很酷,不是吗?但面向对象编程并非通过一两天的学习或听一次课就能掌握的.要真正地掌握面向对   象程序设计,不但需要掌握一定的理论知识,同时还要进行一些实际的编程练习.本文

VB.NET面向对象编程特征

  Visual Basic 7也被称作VB.NET,具备了面向对象(OOP)编程语言的所有特征.对于VB编程人员来说,面向对象的概念和面向对象编程方式都不陌生. 如果问一个面向对象程序设计高手什么是面向对象程序设计语言?他可能会说出一大堆诸如类.接口.消息隐匿.封装.继承.多态性这样的名词,这些名词听起来都很酷,不是吗?但面向对象编程并非通过一两天的学习或听一次课就能掌握的.要真正地掌握面向对象程序设计,不但需要掌握一定的理论知识,同时还要进行一些实际的编程练习.本文探讨了在VB.NET中运用

《JavaScript面向对象编程指南》——导读

前言 这本书旨在介绍JavaScript语言,这是一种具有高度表达能力的.基于原型特性的.非常灵活的面向对象程序设计语言.只要我们摒弃之前设计师所做的那种类似翻滚按钮的玩具思路,这种有趣的.独特的语言就会重新焕发活力,并且远胜往昔,今天的Web 2.0世界中的AJAX.胖客户端程序设计.丰富的仿桌面型网络应用程序.缩放式地图以及基于Web的邮件客户端基本上都依赖于JavaScript所带来的高交互性用户体验.如果说之前没有什么机会能让我们对JavaScript这种语言产生足够的关注,那么现在是时

第六章 Python类(面向对象编程)

什么是面向对象编程?    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言.    面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法.    1)对象:类的实体,比如一个人.    2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类.    3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了

简明Python教程学习笔记_6_面向对象编程

简介 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象这个类的 实例 .这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象). 类(Class)::用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 对象:          通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法. 实例化:      创建一个类的实例,类的具体对象.方法:          类中定义的函数. (方法和函数在