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

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

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

  • 相关阅读:
    Eclipse遇到Initializing Java Tooling终极解决办法
    Quartz定时任务框架理解
    Quartz定时任务调度
    jQueryEasyUI Messager基本使用
    转一篇关于Log4j的介绍文章,很详细
    android联系人
    手机中预置联系人(姓名,号码,头像)
    android获取硬件信息
    Sumatra pdf更改起始页面的黄色颜色
    Eclipse背景颜色设置(设置成豆沙绿色保护眼睛,码农保护色)
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/6189709.html
Copyright © 2011-2022 走看看