php面向对象巧妙应用

class test 
{
	public $a,$b;
	public function __construct($a,$b)
	{
		$this->a=$a;
		$this->b=$b;
	}
	public function set($var, $val)
	{
		$this->$var .= $val;
		return $this;
	}
	public function get()
	{
		echo $this->a.‘-‘.$this->b;
	}
}
class test2 
{
	public $obj;
	public function __construct($obj)
	{
		$this->obj=$obj;
	}
	public function get()
	{
		$this->obj->get();
	}
}
$a = ‘aaaaa‘;
$b = ‘bbbbbb‘;
$set = ‘set‘;

/// 1、链条式调用方法
$test = new test($a, $b);
$test2 = new test2($test);
$test->$set(‘a‘, ‘111111‘)->$set(‘b‘, ‘222222‘); //通过字符串变量调用(类)方法  ps:php另一巧妙应用
 
/// 2、分次调用方法
$test->$set(‘a‘, ‘111111‘);
$test->$set(‘b‘, ‘222222‘);

unset($test);
$test2->get();

虽然test2实例化已传入test,但是test依然可以通过set方法设置参数,然后影响test2。

上述执行程序结果: ( 上面两种都可以得出相同结果 )

aaaaa111111-bbbbbb222222

时间: 2025-01-08 21:41:44

php面向对象巧妙应用的相关文章

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧,想点与代码无关的事,比如人.妖以及人妖. 1)人是人他妈生的,妖是妖他妈生的.人和妖都是对象实例,而人他妈和妖他妈就是原型.原型也是对象,叫原型对象. 2)人他妈和人他爸啪啪啪能生出一堆人宝宝.妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗

JavaScript面向对象旅程(下)

JavaScript面向对象旅程 剪不断,理还乱,是离愁. 前面已经提到过新语言开发的两个步骤,分别是:一.定义基本的数据类型,完善结构化编程语言的设计:二.为函数类型绑定this的概念,好在对象的方法中可以引用到对象自身.下面是继续下去的思路,其主体思想是尽可能地引用传统面向对象语言的相关概念(如类.继承等)到新语言中来. 三.让对象属于某个类 这次要引入类的概念来.但是注意的是,还是前面提到过的思路,是让对象看起来属于某个类,而不是真正地构造基于类的种种语义概念. 一般来说,类包括类符号和类

巧妙的Jq仿QQ游戏导航界面学习

先贴上源代码 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>仿腾讯游戏首页小幻灯片jquery插件</title> 6 7 <style> 8 img{border:0px;font-size:0;} 9 10 .banner{position:relative;width:960px;height:170px

GO语言面向对象

当初开发go语言的时候就是因为C++的特性太过于繁杂,从而使得很多C++的开发者因为C++的特性而头疼,go语言成功的精简了C++的特性,使其很简洁,很少的特性,却可以完成很多的事情. go语言中并没有像C++,Java语言中这类的Class,它只含有像C语言中的结构体,用结构体和指针等特性,完成一个类的作用,很巧妙的使用了指针和结构体,不仅是go的面向对象,包括go语言中的map等操作都是借助了结构体.其实,说白了,C++.Java等面向对象的语言中,类的底层实现就是结构体,对象的引用就是指针

Java 面向对象理解

Java 面向对象的三大特性 封装 比如我们想描述人的属性,可以把人的相关属性name,age...封装成一个人类 Person 类,这样我们就实现从基本数据(属性)到类的封装 我们也可以把一些常用的方法封装到一个类里,作为工具类,比如数据格式校验的方法, 时间格式转换的方法, 这样我们就实现从常用方法到类的封装 有些情况下,我们的数据结构比较复杂,在一个类中的属性中也会声明另一个类的声明, 或者声明一个类的集合作为属性                class Teacher{        

lua面向对象封装及元表(metatable)性能测试

Lua本身是没有面向对象支持的,但面向对象编程在逻辑复杂的大型工程却很有用.于是很多人用Lua本身的数据结构table来模拟面向对象.最简单的一种方法是把对象的方法.成员都放到table中.如: -- file:test.lua local test = {} function test:get_x() return self.x or 0 end function test:set_x( _x ) self.x = _x end local test_module = {} function

面向对象系列二(封装)

只需要最简单的操作就能实现一系列复杂的功能,是做一个个技术攻克的目的.一台精密仪器,一架家用电器,一个小米手机,这些可能我们都在用,或者用过.它们的内部都无比的复杂,使用了各种各样的配件,运用了极多的原理和知识.我们在使用的时候都具有相同的感受:简单.方便.太好了!面对原本复杂的东西,我们却能通过简单介绍就能运用自如,甚至有的能无师自通,这都为什么?这就用到了面向对象的封装性. 面向对象的封装性就是将复杂的处理封装在"盒子"的内部,只凭借装外壳的少量的按钮或键盘就能轻松实现功能.哦,原

Lua学习笔记(五):面向对象的实现

Lua本身是没有class之类的关键字的,但是我们可以巧妙利用function也是值和table的特性来实现面向对象的特性. 通过复制表的实现 Lua中的类也是一个table对象,下面我们看看一个简单的类的定义: 1 People = {}--定义表 People 2 3 --添加方法的第一种方式 4 People.talk = function() 5 print("people talk.") 6 end 7 8 --添加方法的第二种方式 9 function People.say

最近学到一些linq和面向对象的经验分享

最近学到一些linq和面向对象的经验分享给大家:1,如果界面上有数据和集合了,而这些数据实时性很强的话,可以使用linq 或者泛行对内存里面的数据进行处理.可以减少对数据库的查询压力.匿名类型很好用.可以让你不用创建很多的对象. sql里面能做的事情,大多数linq 也能做到. 比如: var 申请单列表= (from 别名 in 申请单集合 group 别名 by new { 科室名称 = 别名.科室名称, 临床科室 =别名.临床科室, 药品编码= 别名.  药品编码, 药品名称 =  别名.