博主信息
博文 100
粉丝 8
评论 2
访问量 174888
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
构造方法、__get()、__set()--2018年5月4日1时9分发布(5月2日作业)
lilove的博客
原创
850人浏览过

主题:

创建一个类,要求有
1. 构造方法
2.查询器:__get()
3.设置器:__set()
并创建一个php脚本进行正确的调用

效果图:

效果.png

构造方法、__get()、__set()代码:

<?php

/*
 * 魔术方法:__get(),__set()
 */
class MyPeople2 {
    //也可以不赋值,设置为私有属性外部无法直接访问,通过方法访问较安全
    private $name;
    private $sex;
    private $age;
    private $hobby;
    private $data=[];
    
    //声明一个构造方法:在实例化类的时候自动调用
    //构造方法也叫构造器:对象属性的初始化
    public function __construct($name='', $sex=0, $age=0, array $hobby=[])
    {
        $this->name = $name;
        $this->sex = ($sex == 0) ? '男' : '女';
        $this->age = $age;
        $this->hobby = $hobby;
    }
    
    //两个下划线开头叫魔术方法,可以访问没有权限读取的属性,由系统直接调用,自动触发。
    //查询器:__get()
    public function __get($name)
    {
        //如果类中添加一个自定义的数据收集器$data,就从这里取值
        $msg = null;
       if(isset($this->name))
       {
           $msg = $this->$name;
       }elseif (isset($this->data[$name])) {
           $msg = $this->data[$name];
       }else {
           $msg = '无此属性,请重新输入。';
       }
       return $msg;
    }
    
    //设置器
    public function __set($name, $value)
    {
        if($name == 'age')
        {
            if(in_array($value,range(16, 70))) 
            {
                $this->$name = $value;
            }
        }else {
            $this->$name = $value;           
        }
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

调用方法代码:

<?php
//加载类文件
require './class/MyPeople2.php';

//实例化对象
$MyPeople2 = new MyPeople2('美女', 1, 18, ['旅游', 'music', '唱歌']);

//调用魔术方法__get()
echo '名字叫做:'.$MyPeople2->name;
echo '<br>';

//调用魔术方法__set()
$MyPeople2->age = 90;
echo '年龄:'. $MyPeople2->age;

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结

类文件要独立,类名称与文件名一致,头字母大写,类属性值不能是变量、表达式、对象。

类属性定义几种方式:

共有:public

私有:private

受保护:protected

构造器:__construct()

魔术方法:

查询器:__get()

设置器:__set()

定义常量:const 常量名称全大写

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学