《PHP与MySQL程序设计》第六章

用_ _set()方法设置属性

boolean __set([string property_name] , [mixed value_to_assign])

自己写了个容易理解的

<?php
class Employee
{
    var $name;
    function __set($propName, $propValue)
    {
        echo ‘$name =‘ . $this->name . ‘<br/>‘;
        echo ‘$propName = ‘ . $propName . ‘<br/>‘;
        echo ‘$propValue = ‘ . $propValue . "<br/>";

        $this->$propName = $propValue;
    }

}

$employee = new Employee();
$employee->name = "Mario";
$employee->title = "Exective chef";

echo $employee->title;

//输出
// $name =Mario
// $propName = title
// $propValue = Exective chef

__set()方法是默认的,我测试了一下,我不写__set()方法,也可以实现

$employee->sex = ‘M‘;

echo $employee->sex;

__set()的方法可以限制一些属性的设置,比如:

<?php
class Employee
{
    var $name;
    function __set($propName, $propValue)
    {
        if ($propName == ‘age‘) {
            if ($propValue < 18 || $propValue > 60) {
                $this->$propName = null;
            } else {
                $this->$propName = $propValue;
            }
        } else {
            $this->$propName = $propValue;
        }
    }
}

$employee = new Employee();
$employee->name = "Mario";
$employee->age = "17";
$employee->page = 1;

echo ‘name = ‘ . $employee->name . ‘<br/>‘;
echo ‘age = ‘ . $employee->age . ‘<br/>‘;
echo ‘page = ‘ . $employee->page;

//输出 雇员的年龄小于18或大于60的时候age=null
// name = Mario
// age =
// page = 1


用 _ _get()方法获取属性

boolean __get([string property_name])

测试

结论:

当属性存在的时候,__set()和__get()是不仅过的。测试例子如下->

<?php
class Employee
{
    public $name;
    public $city;
    protected $wage;

    function __set($propName, $propValue)
    {
        echo "__set called!<br/>";$this->$propName = $propValue;
    }

    function __get($propName)
    {
        echo "__get called!<br/>";
        $vars = array(
            "name",
            "city"
        );

        if (in_array($propName, $vars)) {
            return $this->$porpName;
        } else {
            return "No such variable!";
        }
    }

}

$employee = new Employee();
$employee->name = "Mario";
$employee->city = "shan";

echo $employee->name . "<br/>";
echo $employee->city . "<br/>";

// 输出
// Mario
// shan

在下面加入下的代码->

$employee->age = 20;
echo $employee->age . "<br/>";
// 输出
// __set called!
// 20

echo $employee->sex . "<br/>";
//输出
// __get called!
// No such variable!

如果在$vars数组中加入sex的话,程序报错!

看下来感觉没什么亮点,用不起来。

时间: 2024-10-20 11:38:21

《PHP与MySQL程序设计》第六章的相关文章

数据库系统实现 第六章 查询执行

第六章 查询执行 查询执行也就是操作数据库的算法 一次查询的过程: 查询-->查询编译(第七章)-->查询执行(第六章)-->数据 查询编译预览 查询编译可以分为三个步骤: a)分析:构造分析树,用来表达查询和它的结构 b)查询重写,分析树被转化为初始查询计划,通常是代数表达式,之后初始的查询计划会被优化为一个时间更小的计划 c)物理计划生成,将查询计划转化成物理的计划, 为了选择更好的查询计划,需要判断 1)查询哪一个代数的等价形式是最有效的 2)对选中形式的每一个操作,所使用的算法选

第六章:异常机制

第六章:异常机制 异常的定义 异常:在程序运行过程中出现的意外事件,导致程序中断执行. 异常处理 try...catch 语法:try{ //可能出现异常的代码}catch(异常类型 异常对象名){ //处理异常的代码:}执行过程:当try中的代码异常发生时抛出一个异常对象,该异常对象与catch中异常类型进行匹配,匹配成功进入catch块,否则不执行catch中代码(相当于异常未被处理).程序只有当异常处理成功后才能继续执行. try...catch...catch 语法:try{ //可能出

2017上半年软考 第六章 重要知识点

第六章 项目整体管理 []项目整体管理概述 [][]项目整体管理的含义.作用和过程 项目整体管理6个过程?p264 项目整体管理包括什么? 项目管理的核心是什么? 项目整体管理涉及哪几个方面?p265 [][]项目经理是整合者 项目经理作为整合者要做什么?p265 [][]整体管理的地位 []项目整体管理实现过程 [][]制定项目章程概述 项目章程的意义是什么? 项目章程包括什么? [][]制定项目章程 项目章程的作用? 项目章程的输入? 制定项目章程的工具和技术?p267 项目章程的输出?p2

ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片:多对多关系(上)

这章介绍了怎样创建一个新的实体来管理图片,怎样使用HTML窗体来上传图片文件和使用多对多关系来使它们与产品相关,并且怎样来保存图片到文件系统中.这章也介绍了更多复杂的错误处理增加客户端错误到模型中为了把它们显示回给用户.在这章中播种数据库使用的产品图片可能在在第六章的从Apress网页站点下载代码中. 注意:如果你想遵从这章的代码,你必须完成第五章的代码或者从www.apress.com下载第五章的源代码作为一个起点. 创建实体保存图片文件名 这个项目,我们正要使用文件系统在Web项目中存储图片

Linux与云计算——第二阶段Linux服务器架设 第六章:目录Directory服务器架设—FreeIPA

Linux与云计算--第二阶段Linux服务器架设 第六章:目录Directory服务器架设-FreeIPA 1 FreeIPA 配置FreeIPA服务器 Configure IPA Server to share users' account in your local network. [1] Install FreeIPA. [[email protected] ~]# yum -y install ipa-server ipa-server-dns bind bind-dyndb-lda

APUE读书笔记-第六章 系统数据文件和信息

昨天看完了,今天来看看第六章.感觉第六章的内容不是非常重要.简单看看吧 6.2 口令文件 口令文件其实就是/etc文件夹下的passwd文件,但处于安全性的考虑,我们无法直接读取它.就是通过直接限制权限的方式对其进行保护,passwd文件具体权限如下: -rw-r--r-- 1 root root 可以看到只有root用户具有读写权限,与root同组的用户与其他用户仅具有读权限. 不过为了解决以上问题,Linux中给出了一系列数据结构与函数帮助我们操纵口令文件,首先是关键数据结构,定义位于/in

CSS3秘笈:第六章

第六章  文本格式化 1.font-family 属性设置字体.除了指定想要的字体之外还要使用备用字体.例如: p{ font-family:Arial ,Helvetica ,sans-serif; } 如果字体的名称中包含多个单词,则必须用双引号(””)将它们括起来. 2.·serif字体,适合冗长的文字信息. ·sans-serif字体看起来干净而整洁因此经常被放在标题上. ·monospaced字体经常用于显示计算机代码.字体中的每个字母都是等宽的. ·其他常用字体:Arial Blac

大道至简第六章

今天看了看大道至简第六章<从编程到工程>.文章以<列子·说符>的“得其精而忘其粗,在其内而忘其外:见其所见,不见其所不见,视其所视,而遗其所不视.”为题记.第一节讲了“语言只是工具”,作者讲述了他曾经对一些编程语言的看法.他曾经也热衷于讨论语言的优劣,但是他现在不这样了,他已经不再专注于语言, 正如他在第一章中写到的一样:成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的.确实,程序的好坏不在于语言,在于算法.第二节 说点什么呢,今天看了看大道至简第六章<从编程到工程>

读《大道至简》第六章有感

读<大道至简>第六章,映入眼帘的是:语言是一种工具.在人们的认识中,语言是一种工具.的确,语言是工具,它是思维的工具,是交际的工具,是文化传承的工具,语言的工具性价值已得到人们的广泛认可与普遍使用.但从语言的使用过程.使用范围.使频率以及语言的特质等诸方面进行考察,可以发现,它具有不同于一般工具的许多特点. 从语言的使用过程看.一般的工具是与主体分离的,工具只有在作用的过程中,才与主体在一起,当完成某一特定过程后,主体便与工具分开.如飞机,只有在飞行时,人才与飞机是一体的,一旦飞机将人送到目的

《head first html与css、xhtml》——第六章--标准,规范,第七章--XHTML

2015-04-01 19:48:22 第六章--标准,规范 1.依据html 4.01严格的规范,内联元素必须包含在块元素中,当然,不这样做也能通过. 2.标准的网页加载速度更快,更容易在其他移动设备上运行好,同时,也容易被因视觉障碍而是用屏幕读取器的用户接受. 3.花时间去看错误的信息,你就会开始了解到他们的窍门. 4.只使用块元素填充<body>(<h1><h2>...<p><div><blockquote>..) 5.块元素在