<?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的更多相关文章

  1. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...

  2. php对象: __clone, __toString, __call,__isset, __unset, __sleep, __wakeup,

    __clone: 克隆对象,自动完成操作   clone()  __toString:  return返回字符串  __call: 当调用不存在的函数时,自动执行该方法,并返回相关值 __isset: ...

  3. PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload

    1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...

  4. PHP中的魔术方法总结:__construct,__destruct ,__call,__callStatic,__get,__set,__isset, __unset ,__sleep,__wakeup,__toString,__set_state,__clone,__autoload

    1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $property, $value ...

  5. PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep

    PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...

  6. php __set() __get() __isset() __unset()四个方法的应用

    一般来说,总是把类的属性定义为private,这更符合现实的逻辑.但是,对属性的读取 和赋值操作是非常频繁的,因此在PHP5 中,预定义了两个函数“__get()”和“__set()”来获 取和赋值其 ...

  7. [PHP] 魔术方法__get __set __sleep __wakeup的实际使用

    1.__get __set是在给不可访问属性赋值和读取时,调用 2.__sleep 是在序列化对象的时候调用 3.__wakeup是在反序列化对象的时候调用 4.可以在序列化对象的时候 , 只序列化指 ...

  8. PHP中面相对象对象的知识点整理

    面向对象 万物皆对象,将构成问题的事务分解到各个对象上,建立对象的目的不是为了完成一个工作,而是为了描述某个事务在解决问题中的行为,更符合人的思维习惯,代码重用性高,可扩展性. ___________ ...

  9. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

随机推荐

  1. 《深入理解Linux内核》阅读笔记 --- Chapter 2 Memory Addressing

    1.logical address = segment identifier (16bits) + offset (32bits) segment selector其实就是GDT或者LDT的索引,其中 ...

  2. Java加密技术(四)非对称加密算法RSA

    RSA      这样的算法1978年就出现了.它是第一个既能用于数据加密也能用于数字签名的算法.它易于理解和操作.也非常流行.算法的名字以发明者的名字命名:Ron Rivest, AdiShamir ...

  3. CodeForces 215B Olympic Medal(数学啊)

    题目链接:http://codeforces.com/problemset/problem/215/B Description The World Programming Olympics Medal ...

  4. 线性表 - C语言完整实现

    #include <stdio.h> #define false 0 #define true 1 #define MAXSIZE 20 typedef int bool; typedef ...

  5. vue自定义全局和局部指令

    一.介绍 1.除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令. 2.自定义指令的分类       1.全局指令 2.局部指令 3.自定义全局指令格式 V ...

  6. XMPP环境搭建 (mac环境下 安装自己独立的mysql与服务器(openfire),实现即时聊天功能)

    1简单概览 [一]XMPP简介 http://xmpp.org 即时通讯技术 IM - Instant Messaging ⽀支持⽤用户在线实时交谈.交谈双⽅方都需要⼀一个聊天窗⼝口,其中⼀一个⽤用户 ...

  7. 大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008)

    大家一起来学 NHibernate+NUnit (VS2012+SQL Server2008) 分类: C#2013-08-10 18:47 1589人阅读 评论(5) 收藏 举报 NHibernat ...

  8. hibernate 一对多、多对多的配置

    一对多 <class name="Question" table="questions" dynamic-insert="true" ...

  9. Kattis - honey【DP】

    Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...

  10. 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 ...