关于类protectedprivatepublic的方法
Posted 周起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于类protectedprivatepublic的方法相关的知识,希望对你有一定的参考价值。
今天在写代码的时候发现了一种情况,(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 Admin\Controller;
use Think\Controller;
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
一般规则如下:
公有继承时,水平访问和垂直访问对基类中的公有成员不受限制;
私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问;
保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。
规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问
以上是关于关于类protectedprivatepublic的方法的主要内容,如果未能解决你的问题,请参考以下文章