问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php 类中 通过成员方法访问成员变量有什么好处,我知道是争对于安全性,但不能解释怎么个安全法,

发布网友 发布时间:2022-04-28 04:39

我来回答

2个回答

懂视网 时间:2022-04-28 09:00

php成员方法也叫成员函数,是定义在类的内部,可用于访问对象的数据;php成员方法的语法格式是【[修饰符] function 方法名(参数..){[方法体][return 返回值]}】。

推荐:《PHP视频教程》

PHP类中的成员属性和成员方法

类的声明
成员属性
成员方法(成员函数 ? 定义在类的内部,可用于访问对象的数据)

类的声明

简单格式:

[修饰符] class 类名{ //使用class关键字加空格后加上类名
[成员属性] //也叫成员变量
[成员方法] //也叫成员函数
}

完整格式:

[修饰符] class 类名 [extends 父类] [implements 接口1[,接口2...]]{
[成员属性] //也叫成员变量
[成员方法] //也叫成员函数
}

成员属性

格式:

修饰符 $变量名[=默认值]; //如:public $name="zhangsan";

注意:成员属性不可以是带运算符的表达式、变量、方法或函数调用。

 public $var3 = 1+2;  //错误格式
 public $var4 = self::myStaticMethod(); //错误格式
 public $var5 = $myVar;  //错误格式

正确定义方式:

 public $var6 = 100; //普通数值(4个标量:整数、浮点数、布尔、字串)
 public $var6 = myConstant; //常量
 public $var7 = self::classConstant; //静态属性
 public $var8 = array(true, false); //数组

常用属性修饰符:public、protected、private、static、var(过时)

成员方法

成员方法格式:

[修饰符] function 方法名(参数..){
[方法体]
[return 返回值]
}

修饰符:public、protected、private、static、abstract、final

声明的成员方法必须和对象相关,不能是一些没有意义的操作

 //下面声明了几个人的成员方法,通常将成员方法声明在成员属性的下面
 public function say(){ //人可以说话的方法
  echo "人在说话"; //方法体
 } 
 public function run(){ //人可以走路的方法
  echo "人在走路"; //方法体
 }
<?php //声明一个电话类,类名为Phone
 class Phone {   
 //声明4个与电话有关的成员属性
 public $Manufacturers; //第一个成员属性,用于存储电话的外观
 public $color;   //第二个成员属性,用来设置电话的外观颜色
 public $Battery_capacity; //第三个成员属性,用来定义电话的电池容量
 public $screen_size;  //第四个成员属性,用来定义电话的屏幕尺寸
 //第一个成员方法用来声明电话具有接打电话的功能
 public function call(){  
  echo "正在打电话";  //方法体,可以是打电话的具体内容
 }
 //第二个成员方法用来声明电话具有发信息的功能
 public function message(){  
  echo "正在发信息";  //方法体,可以是发送的具体信息
 }
 //第三个成员方法用来声明电话具有拍照的功能
 public function photo() {  
  echo "正在拍照";  //方法体,可以是拍照的整个过程
 }
 }

热心网友 时间:2022-04-28 06:08

将成员变量私有化,并使用公有接口去访问,是为了保证数据的正确性,保证对象能够正常工作。


对象有两个作用,一是保存数据,二是拥有操作数据的方法。对象就是一个黑盒子,隐藏数据操作细节,而我们可以轻松地处理和取得数据,不需要了解内部的处理过程。对象的数据只由它自己去处理,没有外部干涉,这样的数据是安全的可信任的。


如果我们能够任意改变对象的数据,就是对其密封性的破坏。在"外力"的作用下,对象拥有的数据类型和值发生改变,很可能会影响其内部的处理过程,严重时会发生错误。


示例一:

class Division{
    public $a;
    public $b;
    public function __construct($a, $b) {
        if ($b == 0) 
            throw new Exception('division by zero!');
        $this->a = $a;
        $this->b = $b;
    }
    public function run() { return $this->a / $this->b; }
}
$a = new Division(5, 5);
$a->b = 0;
$a->run(); // 出错了,因为除数被设为了0

在上例中,虽然构造函数对传入的变量经行了过滤,但由于变量是公有的,用户“不小心”更改了$b的值,造成了程序异常。


使用函数来访问变量,可以对变量经行预处理,防止用户传入了不合法的值。这就像是在对象的前面加上了一道“防火墙”,保证程序正常地工作。


示例二:

class A{
    public function call() { echo 'A->call() is calling!'; }
}
class B{
    private $_a;
    public function setA(A $a) {
        if (!is_callable($a, 'call'))
            throw new Exception('A->call() is not callable!');
        $this->_a = $a;
    }
    public function call() {
        if ($this->_a)
            $this->_a->call();
    }
}

在上例中,属性$a是私有的,只能通过setA()方法来设置。setA()方法中使用了PHP的“类型提示”功能,这就要求传入的参数必须是A的实例。在函数中的代码又检查了$a对象是否含有可以调用的$a->call()方法,如果失败就会抛出异常。从而保证了传入变量的正确性。


希望能帮到您~也希望能够及时采纳~

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在公交车上实施扒窃,会受到怎样的处罚? 交通违法行为识别 公交车扒窃会如何处罚? 郑州鱼缸清洗找哪家公司做得比较好? 郑州有没有专业维修鱼缸,清洗鱼缸的? ...的鱼缸,放在办公室养些鱼水草之类的。郑州哪里有卖这样的鱼缸。_百... 我们公司想要定做个观赏鱼缸,不知道郑州哪家公司最专业? 谁知道郑州生态鱼缸定做哪家做的效果最好? 联想电脑启用无线功能的功能键? 笔记本电脑怎么连接网笔记本电脑怎样连接无线网 php购物车如何获取多个商品的id,用$_SESSION[&#39;id&#39;]=$_SESSION[&#39;id&#39;].$GET[&#39;id&#39;].&quot;@&quot;这个书上的方法。 php 最新的购物车session类 php购物车功能 结合session和数据库怎么结合求代码 ASP.NET中如何用session来实现购物车的功能? 请问一下php做购物车为什么要用SESSION来实现呢? thinkphp做的session购物车,求详细代码。有完整例子的可以发下。非常感谢 关于php 构建购物车里面,用到session 书上有这样一段程序 php查询数组并替换字符 php怎么实现java接口的对称加密 java加密用PHP解密 php 非对称加密算法 可以破解吗 php中RSA加密,明文超长,需要分段加密该怎么做 请问在Php中有什么双向加密的方法?请告之方法名称及代码.谢谢 php 一共有几种加密方式? php实现rsa算法,该怎么处理 PHP代码如何加密? PHP中给源代码加密的几种方法 php代码怎么加密最好,不能破解的那种 [PHP]关于mcrypt加密方法的参数 php 非对称加密 用于什么情况 在PHP方法(或成员函数)上除了对象可作为参数限定类型外,还有什么可作为参数限定类 PHP定义一个类,并且定义一个成员方法,该成员方法具有一个参数,传递一个数组,返回当前传递数组的倒序排序 php中函数定义的问题 php的成员方法中可以写自定义函数么 php面向对象中成员方法传参问题,求解 PHP中,怎么在成员函数当中调用自己的成员属性?除了静态调用之外还有别的方法吗? 在php中,如何引用成员函数autocommit() php中self的真正含义是什么?为什么可以调用父类 的成员和方法? - PHP进阶讨论 php,类外函数调用类的成员函数的方法 PHPCMS如何禁止IP访问网站 PHP让某个IP无法访问网站? 如何在php服务器不访问ip,访问域名形式访问网页 网站某php页面被流量攻击.....如何获得访问该页面的IP并禁止访问 请问我如何禁止大陆区IP浏览我的网页? 帮满看一串PHP代码,如何实现禁止的IP显示网页内容 PHP怎么禁止代理访问 linux php扩展目录在哪 书声琅琅教育旗下智圭谷:Python支持的所有文件处理模式? python文件打开 关于Python文件中的w&#x2795;打开模式属于什么模式?