课堂代码2

<?php
/**
* Created by PhpStorm.
* User: fu
* Date: 2017/7/19
* Time: 9:41
*/

class Person{

protected $name;
private $age;

private $mobile;

function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;

}

/**
* 测试使用的不能直接访问的函数
* @param $info
*/
protected function test1($info){
echo ‘我的信息:‘.$info;
}
private function test2(){
echo ‘我不能被直接访问哦~!~!~‘;
}

// /**
// * @return mixed
// */
// public function getName()
// {
// return $this->name;
// }

/**
* __get魔术方法,当在类的外部调用不能直接访问的属性时,该函数方法被自动调用
* 下面的格式是该魔术方法的标准形式,不能改变
* 魔术方法必须是公共的(public),且不能定义为静态的(static),除了__callStatic
* __get必须有返回值,所以最后结束的肯定是return语句
* @param $name 被访问的属性的名称,它必须是一个字符串
*/
public function __get($name){
// echo ‘在类中查找对应名称的属性:‘.$name;
if(isset($this->$name)){
return $this->$name;
}else{
return null;
}
}

/**
* 魔术方法__set,当设置类中的不能直接访问的属性时,自动调用该函数方法
* 下面的格式是该魔术方法的标准形式,不能改变
* __set不需要返回值
* @param $name 需要设置值的类的属性名称
* @param $value 需要设置的值
*/
public function __set($name, $value){
/*
* property_exists 它用于判断类当中是否包含某个指定名称的属性
*/
if (property_exists($this, $name)){
$this->$name=$value;
}
}

/**
* 魔术方法,判断类中的属性是否被设置了
* 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。
* @param $name 传入的是类的属性名称
* @return bool 如果属性存在,则返回true;如果不存在,返回false
*/
function __isset($name){
if (property_exists($this, $name)){
return isset($this->$name);
}else{
return false;
}
}

function __unset($name){
if (property_exists($this, $name)){
$this->$name = null;
}else{
return null;
}
}

/**
* 在对象中调用一个不能直接访问的非静态方法时,__call() 会被自动调用。
* @param $name 被访问的函数方法的名称,字符串格式
* @param $arguments 传递过来的函数方法的参数,数组格式
*/
function __call($name, $arguments){
// echo ‘需要被访问的函数名称:‘.$name;
// var_dump($arguments);
if(method_exists($this, $name)){
call_user_func_array(array($this, $name), $arguments);
}else{
echo ‘没有对应的函数可以被调用‘;
}

}

/**
* 魔术方法,当以字符串格式输出类的对象时,默认被自动调用
* 该函数方法结束必须有一个return语句,且返回的值必须是字符串
*/
function __toString(){
return ‘姓名:‘.$this->name.‘,年龄:‘.$this->age;
// return 100;
}

/**
* 当类的对象被克隆时自动调用执行
* 在这里可以修改被克隆的数据值
*/
function __clone(){
echo ‘<br>数据对象被复制了一个备份<br>‘;
$this->age = 35;
}

}

$p = new Person(‘李四‘, 30);
//$p->test1(‘成都‘);
//echo ‘<br><br>‘;
//$p->test2();
//echo ‘<br><br>‘;
//$p->test3();

//echo ‘<br><br>‘;
//echo $p;
//print $p;
echo ‘<br><br>‘;
print_r($p);
echo ‘<br><br>‘;
$p2 = clone $p;
$p2->name = ‘王五‘;
print_r($p2);

//echo ‘<br><br>‘;
//var_dump($p);

//echo $p->name;
//echo $p->age;
//echo $p->mobile;
//var_dump($p);
//
//
//$p->name = ‘成都‘;
//$p->mobile = ‘13066666666‘;
//$p->birth = ‘2000-01-01‘;
//
//unset($p->age);
//echo ‘<br><br>修改后的对象值:‘;
//var_dump($p);
//
//
//if(isset($p->name)){
// echo ‘OK‘;
//}else{
// echo ‘No‘;
//}

时间: 2024-11-25 18:31:52

课堂代码2的相关文章

程序语言基础 8.14课堂代码

1.判断一个5位数是不是回文数! #include <stdio.h> void main() { int num,ge,shi,qian,wan; printf("请输入一个5位数:"); scanf("%d",&num); ge = num % 10; shi = num / 10 % 10; qian = num / 1000 % 10; wan = num / 10000; (ge == wan && shi == qia

课堂代码1

<?php/** * Created by PhpStorm. * User: fu * Date: 2017/7/18 * Time: 10:18 */ //定义常量define('MYNUM', 100); if(!defined('MYNUM')){ define('MYNUM', 200);}//echo MYNUM; class MyObject{ //定义类中的常量 const NUM = 10000; //定义类中的静态变量 static $num = 100; protected

Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)

layout文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="ma

第一节:网页概述 学习目标 怎样才能学好前端

一.什么是网站? 网站是构成web的基础,就是指在网际网络(万维网)上,根据一定的规则, 使用HTML等工具制作的用语展示特定内容的相关网页的集合,同时也是构成 web的基础. 二.网页 网页是网站中的页面,是构成网站的基础.网页是构成网站的基本元素,是承载各种网站应用的平台.简单来说网站就是由网页构成的.网页通常是HTML格式.网页是通过浏览器来阅读的. 三.构成网页的元素 文字与图片是构成一个网页的两个最基本的元素.初次之外,网页的元素还包括动画,音乐,视频等. 四.网站的制作流程 --前端

32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看)

32位汇编第四讲,干货分享,汇编注入的实现,以及快速定位调用API的数量(OD查看) 昨天,大家可能都看了代码了,不知道昨天有没有在汇编代码的基础上,实现注入计算器. 如果没有,今天则会讲解,不过建议把昨天代码熟悉一遍(课程是紧跟着来的,请不要拉下任何一天,因为今天的知识, 可能就和昨天的知识挂钩,昨天的知识,和前天的挂钩.....,当然你如你懂汇编,不是新手,那么则可以直接往下看) 一丶远程线程注入,和汇编远程注入的区别 昨天的代码,大家可能看了(没看也没有关系,就是远程线程注入的代码,开发角

swift学习笔记一之常量和变量

本系列笔记是博主通过观看慕课网liuyubobobo讲师主讲的<玩儿转swift2.0>的课堂学习笔记并整理课堂上讲到的代码,也可通过慕课网app观看他的视频支持他,讲师的所有课堂代码在github上,以及更新的swift3.0的代码,建议还是先过一遍老师的视频,然后再自己敲一遍课堂代码,再反过来复习,相信一定有很大的帮助. 在OC语言中,变量在声明之前要指明其类型,如 NSString *name = @"liuyubobobo"; 但是swift类型中,当然变量也有指定

4月27日总结

一.json对象套路 <script> var stu = { "name": "龙姑娘", age: 16, classmate: { name: "李小玉", sex: "lady" } } console.info(stu.age); stu.boyFriend = "庞sir"; console.info(stu.boyFriend); console.info(stu.name); c

UI-Day01--讲师笔记(三)

视图编程入门 一.学习目标: 1. 掌握UI视图编程框架 2. 掌握应用程序的生命周期 3. 掌握视图基类UIView的基本使用 4.掌握UIWindow的作用 5. 掌握iOS开发中坐标位置关系 6. 掌握基础控件UILabel基本用法 二.主要内容: 1.认识UI [问]什么是UI? [答]UI全称User Interface(用户接口) 通过UI我们和程序进行交互,传入我们的请求,反馈运行的结果. 如果仅限于iOS程序,看得见,摸得着的部分都是UI. 类比Mac UI:鼠标,键盘,显示器,

新闻公布系统 (Asp.net 三层架构 )

2012年度课程设计---新闻公布系统(小结) -----Presented By [email protected] Tips:因本课程设计大部分代码皆有本人短时间仓促码成,界面恶心,代码丑陋.唯一长处便是:        所有代码都已贴上,而且所有都已凝视.另外与Asp.net教程结合恰当,通俗易懂,easy上手. 需求 新闻公布系统需求III NewsPublish(简称NP) 功能说明 本项目用于对新闻公布进行管理. 1.查看新闻 全部新闻按时间按降序排列: 用户登录后在自己主页能够查看