php类变量访问
看看下面的实例:
<?php
function Test()
{
$w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>
本函数每次调用时都会将 $w3sky 的值设笑链为 0 并输出 "0"。将变亏升神量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。
要写一个销亏不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)的:
如下:
<?php
function Test()
{
static $w3sky = 0;
echo $w3sky;
$w3sky++;
}
?>
❷ php 类中 通过成员方法访问成员变量有什么好处,我知道是争对于安全性,但不能解释怎么个安全法,
将成员变量私有化,并使用公有接口去访问,是为了保证数据的正确性,保证对象能够正常工作。
对象有两个作用,一是保存数据,二是拥有操作数据的方法。对象就是一个黑盒子,隐藏数据操作细节,而我们可以轻松地处理和取得数据,不需要了解内部的处理过程。对象的数据只由它自己去处理,没有外部干涉,这样的数据是安全的可信任的。
如果我们能够任意改变对象的数据,就是对其密封性的破坏。在"外力"的作用下,对象拥有的数据类型和值发生改变,很可能会影响其内部的处理过程,严重时会发生错误。
示例一:
classDivision{
public$a;
public$b;
publicfunction__construct($a,$b){
if($b==0)
thrownewException('divisionbyzero!');
$this->a=$a;
$this->b=$b;
}
publicfunctionrun(){return$this->a/$this->b;}
}
$a=newDivision(5,5);
$a->b=0;
$a->run();//出错了,因为除数被设为了0
在上例中,虽然构造函数对传入的变量经行了过滤,但由于变量是公有的,用户“不小心”更改了$b的值,造成了程序异常。
使用函数来访问变量,可以对变量经行预处理,防止用户传入了不合法的值。这就像是在对象的前面加上了一道“防火墙”,保证程序正常地工作。
示例二:
classA{
publicfunctioncall(){echo'A->call()iscalling!';}
}
classB{
private$_a;
publicfunctionsetA(A$a){
if(!is_callable($a,'call'))
thrownewException('A->call()isnotcallable!');
$this->_a=$a;
}
publicfunctioncall(){
if($this->_a)
$this->_a->call();
}
}
在上例中,属性$a是私有的,只能通过setA()方法来设置。setA()方法中使用了PHP的“类型提示”功能,这就要求传入的参数必须是A的实例。在函数中的代码又检查了$a对象是否含有可以调用的$a->call()方法,如果失败就会抛出异常。从而保证了传入变量的正确性。
希望能帮到您~也希望能够及时采纳~
❸ php怎么在 当前类 中获取 调用类 中的变量
把walk类的引用传递给foot类
❹ php怎么访问类的方法中的变量!!
方法/函数中的变量是不能直接访问的,不论是PHP还是其他语言。
相关知识:
变量具有自己的作用域,一般来说只有全局变量可以在任意位置访问,否则只能在其作用域内访问。已以下函数为例
functionfoo(){
$param='Hello';
}
变量$param是在函数内声明的,当你未调用函数foo时,变量$param尚未存在,而foo函数执行结束后$param变量的生命周期结束,也随之被销毁,所以对于外部代码来说,$param总是不可见的。
❺ 高分求解,PHP 怎么用变量访问静态属性
<?php
classTest
{
static$test='123456';
}
$str='test';
echoTest::$$str;
❻ php的类静态变量并发调用时会不会出现访问冲突
静态方法就是隶属于一个类的函数,为什么希望让这个函数枯判隶属于类,一般有两种情况:1、函数的名字太常规,以慎肢至于可能与其它独立函数产生命名冲突,则你把它作为类的静态方法,可以变相起到封入命名空间的效果。比如你想为某个类定义一个特别版的setcookie();2、当一个函数希望访问某个类的私有成员变量时(private 或 protected),显然在通常情况下,它作为外部独立函数是访问不到的。把它定义为那个类的静态方法宽败世,就可以作为类的成员函数轻松访问那些私有成员变量了。另外对 6 楼做一个补充:静态成员方法也有访问级别,如果定义为了 private 或 protected,则外部是无法作为普通函数直接调用的。
❼ php类中的函数能否调用类中成员变量
php类中的函数能调用类中成员变量。即使没有具体对象,也能调用类的静态成员函数和成员变量。
❽ PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,访问类的方法/变量有两种方法:
1.
创建对象$object
=
new
Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。
2.
直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
A.
如果是变量,需要该变量可访问。
B.
如果是方法,除了该方法可访问外,还需要满足:
b1)
如果是静态方法,没有特殊条件;
b2)
如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->…
和使用class::…
都有什么区别:
1.
使用$object->…
,需要执行构造函数创建对象;
2.
使用class::…
调用静态方法/变量,不需要执行构造函数创建对象;
3.
使用class::…
调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
1.
静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
2.
静态方法
静态方法可以直接使用class::…
来调用,而非静态方法需要满足一定限制条件才能使用class::..
的方法调用,如之前所述
❾ 请问PHP中同一个类中怎么访问不同方法的变量
PHP中同一个类中怎么访问不同方法的变量,我觉得这要看你访问的变量的作用范围,如果这个变量的作用范围是类,那么只要是同一个类里的方法,都可以访问。
如果这个变量的作用范围只在类的方法里,则可以采取的办法:
1. 修改或定义变量的作用域为全局。
2. 拆分方法,将变量的结果作为一个结果返回。
❿ PHP:对象->变量名可以访问类中的变量,如果访问的变量被private修饰,怎么不报错呢
在PHP5中,“__set()”和“__get()”这两个方法,专门为私有属性设置值和获取值的方法,如果是public属性的话,不用这两个函数可以访问属性;
这两个魔法函数可以这么理解,就是外或老面访问$oo->type='DIY';的type只是一个名字,传递到类,类里面的一个方法给类的私有属性赋值,而不是在类外面直接赋值,传递到类里面的方法进行赋值;
这两个方法不是默认存在的,而是我们隐坦手工添加到类里面去的,才能对类添加属性和获取灶团桐属性。