014对象——对象 __isset __unset __sleep __wakeup
<?php /**
*
*/
/*class lantian
{
public $name;
public $age;
private $money;
public $c;
function __construct($name, $arg = '', $money)
{
$this->name = $name;
$this->age = $arg;
$this->money = $money;
} function __isset($var)
{
//设置可以在外面检验的变量
$array = array('name', 'age');
if (in_array($var, $array)) {
// return isset($this->money);
echo $var . "属性存在,他的值是:" . $this->$var;
} elseif (in_array($var, array_keys(get_object_vars($this)))) {
echo "变量不允许外部检测";
return;
} else {
echo "属性不存在";
}
}
//利用魔术:__unset()可以删除私有的属性
function __unset($c)
{
if ($c=='age'){
unset($this->$c);
echo "删除属性{$c}成功";
}else{
echo "不允许删除属性{$c}";
}
}
function get_money(){
echo $this->money;
}
} $lisi = new lantian("李四", 22, 5500); //isset($lisi->name); //获取当前的页码
//echo isset($_GET['page'])?$_GET['page']:1;
$lisi->c=200;
//echo $lisi->c;
unset($lisi->age);
//echo $lisi->get_money();*/ /*$array1=array('php','html','mysql');
$str=serialize($array1);//serialize() 产生一个可存储的值的表示。序列化数据
$array2=unserialize($str);//unserialize() 从已存储的表示中创建 PHP 的值。反序列化
print_r($array2);*/ /*class db{
private $host;
private $user;
private $pwd;
private $dbname;
function __construct($host,$user,$pwd,$dbname)
{
$this->host=$host;
$this->user=$user;
$this->pwd=$pwd;
$this->dbname=$dbname;
$this->db();
}
function db(){
$mysqli=new mysqli($this->host,$this->user,$this->pwd,$this->dbname);
}
function select(){
$sql="SELECT cate_id,cate_name FROM blog_category";
$result=$this->mysqli->query($sql);
while ($row=$result->fetch_assoc()){
$rows[]=$row;
}
print_r($rows);
}
//反序列化魔术函数
function __wakeup()
{
$this->db();
}
}
session_start(); //打开session();
$chanel=new db('localhost','root','','blog');
//$chanel->select();
//保存查找的内容,进行序列化,在别的页面进行调用:
//$chanel_obj=serialize($chanel);
//var_dump($chanel_obj); $_SESSION['chanel_obj']=serialize($chanel); //保存序列化之后的数据到session中。
echo serialize($chanel);*/ //
class ren{
private $name;
private $age;
function __construct($name,$age)
{
$this->name=$name;
$this->age=$age;
}
function show(){
echo "姓名是:{$this->name} 年龄是:{$this->age}";
}
//魔术方法:__sleep()指定序列化的属性
function __sleep()
{
//return array('name','age'); //获取类的属性:
print_r(array_keys(get_object_vars($this)));//get_object_vars()获取对象的变量属性:
}
}
$zao=new ren('赵六',22);
echo serialize($zao);
<?php
/**
*/
session_start();
include '14.php';
$channel_obj=unserialize($_SESSION['channel_obj']);
$channel_obj->select();
014对象——对象 __isset __unset __sleep __wakeup的更多相关文章
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- php对象: __clone, __toString, __call,__isset, __unset, __sleep, __wakeup,
__clone: 克隆对象,自动完成操作 clone() __toString: return返回字符串 __call: 当调用不存在的函数时,自动执行该方法,并返回相关值 __isset: ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- PHP中的魔术方法总结:__construct,__destruct ,__call,__callStatic,__get,__set,__isset, __unset ,__sleep,__wakeup,__toString,__set_state,__clone,__autoload
1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- php __set() __get() __isset() __unset()四个方法的应用
一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是,对属性的读取 和赋值操作是非常频繁的,因此在PHP5 中,预定义了两个函数“__get()”和“__set()”来获 取和赋值其 ...
- [PHP] 魔术方法__get __set __sleep __wakeup的实际使用
1.__get __set是在给不可访问属性赋值和读取时,调用 2.__sleep 是在序列化对象的时候调用 3.__wakeup是在反序列化对象的时候调用 4.可以在序列化对象的时候 , 只序列化指 ...
- PHP中面相对象对象的知识点整理
面向对象 万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性. ___________ ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
随机推荐
- 《深入理解Linux内核》阅读笔记 --- Chapter 2 Memory Addressing
1.logical address = segment identifier (16bits) + offset (32bits) segment selector其实就是GDT或者LDT的索引,其中 ...
- Java加密技术(四)非对称加密算法RSA
RSA 这样的算法1978年就出现了.它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作.也非常流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir ...
- CodeForces 215B Olympic Medal(数学啊)
题目链接:http://codeforces.com/problemset/problem/215/B Description The World Programming Olympics Medal ...
- 线性表 - C语言完整实现
#include <stdio.h> #define false 0 #define true 1 #define MAXSIZE 20 typedef int bool; typedef ...
- vue自定义全局和局部指令
一.介绍 1.除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令. 2.自定义指令的分类 1.全局指令 2.局部指令 3.自定义全局指令格式 V ...
- XMPP环境搭建 (mac环境下 安装自己独立的mysql与服务器(openfire),实现即时聊天功能)
1简单概览 [一]XMPP简介 http://xmpp.org 即时通讯技术 IM - Instant Messaging ⽀支持⽤用户在线实时交谈.交谈双⽅方都需要⼀一个聊天窗⼝口,其中⼀一个⽤用户 ...
- 大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008)
大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008) 分类: C#2013-08-10 18:47 1589人阅读 评论(5) 收藏 举报 NHibernat ...
- hibernate 一对多、多对多的配置
一对多 <class name="Question" table="questions" dynamic-insert="true" ...
- Kattis - honey【DP】
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
- Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) A. Oath of the Night's Watch
地址:http://codeforces.com/problemset/problem/768/A 题目: A. Oath of the Night's Watch time limit per te ...