PHP中__set()方法的定义

问题描述

看kissmvc代码的问题abstract class KISS_View { protected $file = ''; protected $vars = array(); function __construct($file='', $vars='') { if ($file) $this->file = $file; if (is_array($vars)) $this->vars = $vars; return $this; } function __set($key, $var) { return $this->set($key, $var); } function set($key, $var) { $this->vars[$key] = $var; return $this; } ...}我想问为什么__set()要调用set(),而不是把set()函数体的代码直接放入__set()中。http://kissmvc.com/http://code.google.com/p/kissmvc-php-mvc-framework/ 问题补充:ZavaKid 写道

解决方案

因为想在别的类中调用set函数。如果调用_set只能用$obj->key = $value这样的方法。所以这样做给了使用者更多的选择,可以用属性,也可以用方法,不是很好吗?
解决方案二:
都可以。只不过是代码只存在一处了。要不然set方法也直接写代码,那这份逻辑就存在两份了。

时间: 2024-10-22 05:41:58

PHP中__set()方法的定义的相关文章

ThinkPHP中U方法的使用浅析_php实例

thinkPHP中U方法的定义规则如下(方括号内参数根据实际应用决定): U('[项目://][路由@][分组名-模块/]操作? 参数1=值1[&参数N=值N]')或者用数组的方式传入参数:U('[项目://][路由@][分组名-模块/]操作',array('参数1'=>'值1' [,'参数N'=>'值N'])) 如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子: U('Myapp://User/add') // 生成Myapp项目的User模块的add操作的U

Javascript中的方法和匿名方法实例详解_javascript技巧

本文实例讲述了Javascript中的方法和匿名方法.分享给大家供大家参考.具体分析如下: Javascript方法(函数) 声明函数 以function开头,后跟函数名,与C#.java不同,Javascript不需要声明返回值类型.参数类型.没有返回值就是undefined. 举个例子更清楚:  无参数无返回值的方法: function f1(){ alert('这是一个方法'); } f1();//调用方法 无参数有返回值的方法: function f2(){ return 100; }

Go语言中的方法定义用法分析_Golang

本文实例讲述了Go语言中的方法定义.分享给大家供大家参考.具体分析如下: 事实上,可以对包中的任意类型定义任意方法,而不仅仅是结构体. 不能对来自其他包的类型或基础类型定义方法. 复制代码 代码如下: package main import (     "fmt"     "math" ) type MyFloat float64 func (f MyFloat) Abs() float64 {     if f < 0 {         return fl

java新手:接口中的方法在用的时候还要实现,为什么还要定义。

问题描述 java新手:接口中的方法在用的时候还要实现,为什么还要定义. 接口困扰好久了求解答.纯属新手提问.请勿揍脸................................................................................................................................... 解决方案 好好看看java基础知识,.封装,继承,多态 解决方案二: 没有接口,就没办法自定义代码. 用过Java的排

javascript中数组的多种定义方法和常用函数简介_基础知识

数组的定义:方法1. 复制代码 代码如下: var mycars=new Array()mycars[0]="sharejs.com"mycars[1]="Volvo"mycars[2]="BMW" 方法2.定义和初始化一起: 复制代码 代码如下: var mycars=new Array("Saab","Volvo","BMW"); 或者: 复制代码 代码如下: var mycars=

PHP中魔术方法的用法

  PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */ // __toString.__set.__get__isset().__unset() /* The __toString method allows a class to decide how it will react when it is converted to a string. __set() is run when writing

PHP5中魔术方法

魔术函数 1.__construct() 实例化对象时被调用, 当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用. 2.__destruct() 当删除一个对象或对象操作终止时被调用. 3.__call() 对象调用某个方法, 若方法存在,则直接调用: 若不存在,则会去调用__call函数. 4.__get() 读取一个对象的属性时, 若属性存在,则直接返回属性值: 若不存在,则会调用__get函数. 5.__set() 设置一个对象的属性

mvc-php类中有些方法只有方法名,没写内容

问题描述 php类中有些方法只有方法名,没写内容 一般都是MVC比较底层的类里会出现这种方法,搞不清楚这个事干嘛用的.是为了覆盖方法吗?还是只做定义用? public function isRegistered($userId); 解决方案 貌似前置声明,似乎可以用不用 解决方案二: 应该就是前置声明,以前从来没注意过啊 解决方案三: 那是调用库中函数的声明,不然你不能用的,还可能造成问题, 底层那个类接口文件一般是由底层去修改的,顶层不用问事 具体的实现方式,是C/C++写在库里的,不用问事,

objective c-在Xcode4中调用方法没用回应

问题描述 在Xcode4中调用方法没用回应 如题,要调用的方法是导入工程中的外来文件,但是工程编译成功了,文件方法调用失败.而且也没有错误提示什么的. 问题描述: 1.下载了 Flickr API(4个文件) 到Xcode文件管理器中,指定赋值和链接到我工程中的4个文件. * Flickr.h * Flickr.m * FlickrPhoto.h * FlickrPhoto.m 2.在主视图控制器中,最先导入了外来文件: #import "Flickr.h" #import "