一、魔术方法__get 和 __set的使用:管理类中不存在的变量属性成员
在类中使用该两个函数
class Test{
protected $arr = array();
protected $page = 10;
public function __set( $key, $value ){
echo __METHOD__;
$this->arr[$key] = $value;
}
public function __get( $key ){
echo __METHOD__;
return $this->arr[$key];
}
}
使用示例
$test = new Test();
$test->title = "hello"; //给不存在的类的变量属性赋值时候会调用__set函数
echo $test->title; //使用不存在的变量时候会调用_get函数
//__call管理类中不存在的非静态方法,__callStatic则管理不存在的静态方法
class Test{
public function __call( $func, $param ){
var_dump(__METHOD__);
var_dump($func);
var_dump($param);
$err = $func."方法不存在";
echo $err;
}
static public function __callStatic( $func, $param ){
$err = $func."静态方法不存在";
echo $err;
}
}
$test = new Test();
$test->demo(); //当使用类中不存在的方法时候,会使用到定义的__call方法
//__toString方法是当直接输出一个对象时候,可以通过调用该方法输出字符串形式的类的名称
Class Test{
public function __toString(){
return __CLASS__;
}
}
$test = new Test();
echo $test; //调用__toString方法
//__invoke方法:把对象当做方法使用时候会调用
Class Test(){
public function __invoke( $param = ''){
var_dump($param);
return "ggggg";
}
}
$test = new Test();
echo $test('fff');
相关推荐
以下是对七个常用魔术常量的详细说明: 1. **__LINE__**:这个常量表示当前执行的代码行号。当你需要在错误报告或日志中记录错误发生的确切位置时,__LINE__ 非常有用。它的值会随着代码的执行而动态变化。 2. **_...
这个算法使用数组 `a` 来存储魔术方阵的元素,并使用 `i` 和 `j` 变量来控制元素的填充顺序。算法首先将 1 填入最上行的中间格,然后往右上方走,以 1 的级数增加其值,并将此值填入空格;若超出方阵,则往下到最...
在易语言环境中,魔术棒选取算法的实现可能包括以下几个部分: - 图像数据读取:读取图像文件,将其转化为程序可以处理的数据结构。 - 颜色比较:定义颜色差异的计算方式,通常使用欧氏距离或RGB差值。 - 递归选取:...
面向对象编程(OOP)是PHP中的一个重要特性,主要包括以下几个概念: - **继承**:允许一个类继承另一个类的属性和方法。子类可以通过`extends`关键字来继承父类,从而扩展或修改父类的行为。 - **封装**:通过将数据...
在描述中提到了几个关键的 `$_SERVER` 变量: - `$_SERVER['DOCUMENT_ROOT']`:这个变量返回的是Web服务器配置中定义的文档根目录。它通常与Apache服务器的 `DocumentRoot` 配置指令对应,用于确定Web服务器查找...
11. 魔术常量:介绍了PHP中八个魔术变量,它们在特定情况下自动可用,如__LINE__(当前代码行号)、__FILE__(当前文件名)等。 12. 注释:介绍了PHP中的单行注释(//或#)和多行注释(/* ... */)的使用。 此外,...
1. __FILE__:这个魔术变量返回当前执行的脚本文件的完整路径和文件名。例如,如果你的脚本位于D盘下的web目录中,并且文件名为index.php,那么__FILE__将返回"D:/web/index.php"。需要注意的是,这个值是只读的,也...
传统的代码审计技术主要包括以下几个方面: 1. **输入验证**:确保所有外部输入数据符合预期格式和范围。 2. **输出过滤**:在数据输出到用户之前进行过滤处理,防止跨站脚本(XSS)等攻击。 3. **代码审查**:人工或...
接下来,通过`unset()`函数清空了几个PHP老版本中的全局变量,如`$HTTP_ENV_VARS`和`$HTTP_POST_VARS`,因为在PHP 4.1.0及以上版本,这些变量已被`$_REQUEST`、`$_POST`等超全局变量取代。清理这些变量是为了提高...
针对“重构”这一标签,我们可以学习以下几个重构技术: 1. **提取方法**:当一个方法变得过长或者承担太多职责时,可以将其分解为多个小方法,每个小方法只负责单一任务。 2. **移动函数/变量**:如果一个函数或...
华为的Java编码规范主要涵盖了以下几个方面: 1. **命名规范**:包括类名、方法名、变量名等应遵循驼峰命名法,常量全大写,每个单词间用下划线分隔。包名使用小写字母,类名首字母大写,接口名与类名相同,方法名...
本文主要涵盖了PHP的几个核心概念,包括输出指令、变量、类型、数组、对象以及常用函数。 首先,PHP中的输出指令主要有echo和print。echo是一个语言结构,它能快速地输出一个或多个字符串,没有返回值。相比之下,...
在重构过程中,主要关注以下几个关键知识点: 1. **识别坏味道**:代码坏味道是重构的起点,比如过长方法、重复代码、复杂的条件语句等,这些都是需要改进的信号。通过识别这些坏味道,我们可以找到重构的目标。 2...
首先,PHP代码规范通常涵盖以下几个方面: 1. **缩进与空格**:大部分PHP社区推荐使用四个空格进行代码缩进,而不是制表符,这样可以使代码在不同的编辑器和系统中显示一致。 2. **代码结构**:良好的代码结构包括...
在实际的安全分析中,我们需要关注以下几个方面: 1. **查找可控制的序列化数据源**:确定哪些用户输入或外部数据会被用于反序列化。 2. **识别易受攻击的类和方法**:分析代码以找出可能被恶意触发的魔术方法或...
《PHP从入门到精通3th》可能会包含几个完整的项目案例,让读者通过实际操作来巩固所学知识。这些项目可能涉及小型博客系统、在线商店或者其他类型的Web应用。通过这些实践,读者可以学习到如何规划项目结构、编写...