- 浏览: 2034836 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
一,public,private,protected的区别
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
二,实例
<?php error_reporting(E_ALL); class test{ public $public; private $private; protected $protected; static $instance; public function __construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } static function tank(){ if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; echo $this->private; //private,内部可以调用 echo $this->protected; //protected,内部可以调用 $this->pri_function(); //private方法,内部可以调用 $this->pro_function(); //protected方法,内部可以调用 } protected function pro_function(){ echo "you request protected function<br>"; } private function pri_function(){ echo "you request private function<br>"; } } $test = test::tank(); echo $test->public; echo $test->private; //Fatal error: Cannot access private property test::$private echo $test->protected; //Fatal error: Cannot access protected property test::$protected $test->pub_function(); $test->pro_function(); //Fatal error: Call to protected method test::pro_function() from context $test->pri_function(); //Fatal error: Call to private method test::pri_function() from context ?>
从上面的例子中,我们可以看出,
public: 可以class内部调用,可以实例化调用。
private: 可以class内部调用,实例化调用报错。
protected: 可以class内部调用,实例化调用报错。
<?php class test{ public $public; private $private; protected $protected; static $instance; public function __construct(){ $this->public = 'public <br>'; $this->private = 'private <br>'; $this->protected = 'protected <br>'; } protected function tank(){ //私有方法不能继承,换成public,protected if (!isset(self::$instance[get_class()])) { $c = get_class(); self::$instance = new $c; } return self::$instance; } public function pub_function() { echo "you request public function<br>"; echo $this->public; } protected function pro_function(){ echo "you request protected function<br>"; echo $this->protected; } private function pri_function(){ echo "you request private function<br>"; echo $this->private; } } class test1 extends test{ public function __construct(){ parent::tank(); parent::__construct(); } public function tank(){ echo $this->public; echo $this->private; //Notice: Undefined property: test1::$private echo $this->protected; $this->pub_function(); $this->pro_function(); $this->pri_function(); //Fatal error: Call to private method test::pri_function() from context 'test1' } public function pro_extends_function(){ echo "you request extends_protected function<br>"; } public function pri_extends_function(){ echo "you request extends_private function<br>"; } } error_reporting(E_ALL); $test = new test1(); $test -> tank(); //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。 ?>
从上面的例子中,我们可以看出,
public: test中的public可以被继承。
private: test中的private不可以被继承。
protected: test中的protected可以被继承。
static: test中的static可以被继承。
唉,对于这些东西,老是不喜欢记着,用的时候,总感觉不对,又要去查,所以写个例子,方便自己查看。
发表评论
-
Discuz 插件开发
2014-11-12 15:00 1984首先开启开发者模式,在config\config_glob ... -
php session存数据库
2013-11-27 21:43 1595php.ini改称 session.save_handle ... -
PHP在WIN下操作socket
2013-08-29 17:05 1483TCP/UDP Socket调试工具 PHP在WI ... -
防止恶意注册和暴力破解
2012-07-10 21:43 42441验证码2token令牌。(同理随机input的name ... -
MyISAM InnoDB 区别
2012-02-14 11:50 1499主要区别: 1).MyISAM ... -
MySQL索引
2012-01-13 09:58 14411、索引是什么 索引 ... -
session共享之memcache Redis
2011-11-02 15:11 76352.Redis的特点 Redis本质上是一个Key ... -
mysql分表,分区的区别和联系
2011-09-29 12:09 1721一,什么是mysql分表, ... -
图片处理神器ImageMagick以及PHP的imagick扩展
2011-09-26 18:16 2064ImageMagick是一套功能强大、稳定而且开源的工具集 ... -
PHP获取MAC地址
2011-09-26 17:57 1464获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取 ... -
PHP检测远端文件是否存在
2011-06-20 14:45 2160<?php $url = 'http://exampl ... -
php 扩展检查并加载
2011-06-16 15:41 1961<?php /** *列出所有加载的扩展及其包含的 ... -
php 魔术方法 魔术常量
2011-06-16 15:13 1505魔术常量(Magic constant ... -
php实现计划任务与持续进程实例 fsockopen
2011-06-09 09:39 2732Web服务器执行一个PHP脚本,有时耗时很长才能返回执行结果, ... -
php如何转换html标签
2011-06-09 09:37 3170php如何转换html标签,使其能在浏览器中正常显示?在编 ... -
php自动运行 win32service功能
2011-06-01 18:07 5136什么 windows服务 ? http ... -
PHP 之session cookie
2011-06-01 11:07 2030cookie和session有什么用 ... -
PHP5常用函数
2011-05-18 10:13 1786PHP已经更新到很多个版本,最近用的比较多的要数PHP5。 ... -
php跨平台总结 常用预定义常量
2011-05-17 17:38 1957<?php echo PHP_EOL; ... -
abstract class和interface有什么区别
2011-05-06 21:10 1578抽象类和接口的异同1. 相同点:(1)两者都是抽象类,都不能实 ...
相关推荐
Java 中有四种访问修饰符:public、protected、默认(default)和 private。这四种修饰符的作用域从大到小依次降低。 1. public 修饰符 public 修饰符是最宽松的访问修饰符,它允许从任何地方访问修饰的成员,...
PHP中的类成员访问控制关键字public、private和protected定义了类属性和方法的可见性。它们决定了一个类成员能否被类外的代码访问或调用。理解这三者的区别,对于编写面向对象的PHP代码至关重要。 首先,public成员...
下面我们将基于提供的示例代码来探索JavaScript中如何实现public、private属性和方法,以及模拟static效果。 1. public属性和方法: 在JavaScript对象字面量中定义的属性和方法默认都是public(公开的),可以在...
Ruby中,却不行:你只能在你本对象的实例中访问本对象的private方法。 因为Ruby的原则是“private意为你不能指定方法接收者”,接收者只能是self,且self必须省略! 所以Ruby中子类可以访问父类的privat
这些修饰符包括`public`、`private`、`protected`以及`final`和`abstract`等。下面将详细解释这些关键字的意义及其在面向对象设计中的作用。 ### 1. `public` `public`是最开放的访问修饰符,意味着无论在哪一个类...
总结起来,`public`、`private`、`protected` 和 `abstract` 关键字是PHP中控制类的封装和继承的重要工具,它们帮助开发者构建更加安全、灵活的代码结构。通过合理地使用这些关键字,可以确保代码的可维护性和可扩展...
代码如下: class AccessTest def test return “test private” end def test_other(other) “other object ”+ other.test end end t1 = AccessTest.new t2 = AccessTest.new p t1.test # => test private p t1....
### Ruby中的访问控制:Private与Protected详解 在面向对象编程中,访问控制是确保类的封装性和安全性的重要机制之一。Ruby作为一种动态类型的面向对象语言,提供了`public`、`protected`和`private`三种访问控制...
本文将深入探讨如何直接访问PHP实例对象中的`private`属性,同时回顾面向对象的访问控制规则。 首先,PHP提供了三种访问修饰符:`public`、`protected`和`private`。`public`属性或方法可以在任何地方被访问,不受...
public属性和方法可以在任何地方访问,protected仅在类及其子类中可用,而private只能在定义它的类内部访问。 9. 类的重写(override) 子类可以覆盖父类的方法,这称为方法重写。重写需要在子类中使用与父类相同...
此外,抽象类中的抽象方法可以有访问控制修饰符(public、protected和private),表示方法的访问权限。类的继承是使用关键字extends来实现的。值得注意的是,一个类不能同时继承多个抽象类,但可以继承一个抽象类,...
在PHP中,属性可以声明为公有(public)、私有(private)或保护(protected),以控制其访问权限。 ```php class MyClass { public $publicVar; private $privateVar; protected $protectedVar; } ``` 3. ...
PHP 访问控制与封装 `public`, `protected`, `private` 修饰符 这些修饰符控制了类中成员的可访问性。`public` 成员可以在任何地方访问;`protected` 成员只能在类本身及其子类中访问;`private` 成员只能在类本身...
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问; private表示私有的访问权限,只有本...
在PHP中,导出数据到CSV格式是常见的需求,尤其是在需要将数据集以电子表格形式供用户下载时。当数据量较大时,一次性将所有数据加载到内存中导出可能会导致内存溢出(内存不足问题)。因此,创建一个能够分批次导出...