zoukankan      html  css  js  c++  java
  • 关于类protected、private、public的方法

    今天在写代码的时候发现了一种情况,(TP框架)有一个model类   AdminModel.class.php

    class AdminModel extends Model
    {
    protected $_validate = array(
    array('username','require','管理员名称不得为空!',1),
    //array('username','','管理员 名称已经存在!',1,'unique',1),

    array('password','require','管理员密码不得为空!',1,'regex',1),
    );

    public function login()
    {
    $password = $this->password;
    $info = $this->where(array('username'=>$this->username))->getField('password');

    if ($info == md5($password)){
    return 1;
    }else
    return 0;
    }

    }

    <?php
    namespace AdminController;

    use ThinkController;

    class LoginController extends Controller
    {
    public function index()
    {
    $admin = D('admin');    //实例化AdminModel
    if (IS_POST){
    if ($admin->create()){
    if ($admin->login()){  //使用AdminModel里的login方法
    $this->success('登陆成功,跳转中……',U('Index/index'));
    }else{
    $this->error('用户名或密码错误');
    }
    }else{
    $this->error($admin->getError());
    }
    exit();
    }

    $this->display();
    }
    }

    但是奇怪的是,当将login方法 属性设置为protected的时候,控制器中的$admin对象无法调用login()方法,上网搜索了一下,得到的答案如下。
    原文地址:http://www.educity.cn/wenda/712078.html

    一般规则如下: 
    公有继承时,水平访问和垂直访问对基类中的公有成员不受限制; 
    私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问; 
    保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。

    规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问

  • 相关阅读:
    php 接收表单 方法的区别
    php上传图片---初级版
    php 验证格式的函数总结
    行为类模式分析
    深入理解java虚拟机
    JVM生产环境参数实例及分析
    redis 排序(转)
    八种常用的排序算法(转)
    CAS原理分析
    Redis使用总结之与Memcached异同(转)
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/6189709.html
Copyright © 2011-2022 走看看