首页 > 代码库 > 关于类protected、private、public的方法
关于类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 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
一般规则如下:
公有继承时,水平访问和垂直访问对基类中的公有成员不受限制;
私有继承时,水平访问和垂直访问对基类中的公有成员也不能访问;
保护继承时,对于垂直访问同于公有继承,对于水平访问同于私有继承。
规则中,称派生类的对象对基类访问为水平访问,称派生类的派生类对基类的访问为垂直访问
关于类protected、private、public的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。