当前位置:首页 » 编程语言 » php类成员变量

php类成员变量

发布时间: 2022-06-24 04:32:11

① 关于php 构架和继承类的问题和成员变量是什么意思

public function __construct($name,$age,$avirpois,$sex,$height){//定义个构造 构架是起到什么作用的
构造函数就是当你new一个对象的时候自动执行的
$this->name=$name; //继承了父类为什么这里还要调用成员变量
你new zilei("李亚","165"); 执行子类的构造函数,构造函数中给父类的成员变量赋值,并不执行父类的构造方法,要执行的话就要在子类中加parent::__construct

② 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类中通过var定义的成员变量,是什么访问权限的

var 一般是出现在类中。一般的过程和函数不要 var定义变量.
且它的级别为public。亦不能用任何其它的修饰符。需要注意的是:在成员方法中亦不能这样声明。

④ 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 成员变量不能是多维数组

不关多维数组的事,而是在类定义里面不允许直接给变量赋值!!
比如你把$arr =array('a1'=>$arr2=array('a4'=>$arr3=array('a'=>'11'),'a5'=>'55'),'a2'=>'22','a3'=>'33');
改为
$arr=1 一样会报错.
清楚没有?

你可以在class外部定义变量,然后在class里调用.

⑥ 继承中设置成员变量 php

照你的描述应该是不可以的。php是一种只支持单重继承的语言,子类在继承父类的时候一定要继承父类的所有的构造方法。要多重继承的时候要用到接口(php不支持多重继承)

⑦ PHP类的成员属性

一个好的编程习惯是所有变量都定义,“可以不定义”并不是你不定义的理由。如果有可能,最好能把没有定义的变量都当作编译错误报告,这样可以避免写错变量名。如果PHP不检查这个,说明语法检查不严谨

⑧ PHP中全局变量 局部变量 成员变量有什么区别

局部变量只能函数内部使用作为
return函数返回值,
调用函数的形参
局部变量,全局变量要页面能使用,但是类中函数中不能使用,需要传入赋值使用,php种没有成员变量的说法!

⑨ php构造方法对成员变量赋值 function__construct

function __construct

function 是系统关键词,表示定义一个方法,后面加空格然后根方法名( __construct
是方法名)。你的未加空格

__construct 是系统内置的,叫魔术方法,每次实例化类是会自动执行此方法。
还有就是调用类的成员变量不需要在变量前面加 $ 比如:
$this->school_name = $name; 正确
$this->$school_name = $name; 错误

<?php
class School {
public $school_name;
public $school_student;
public $school_room;
public $school_teacher;
function __construct($name, $student, $room, $teacher) {
$this->school_name = $name;
$this->school_student = $student;
$this->school_room = $room;
$this->school_teacher = $teacher;
}
function show() {
echo "!@#$%^&*";
}
}

class People extends School {
public $teachername;
function __construct($tname, $studentconsts) {
$this->teachername = $tname;
$this->school_student = $studentconsts;
}

function show() {
return "今天上课" . $this->teachername . "讲课,学生" . $this->school_student . "人";
}
}

class Tongji extends School {
function show() {
return "学校名:" . $this->school_name . "学生数:" . $this->school_student . "教室数:" . $this->school_room . "教师数:" . $this->school_teacher;
}
}

$a = new People ( "周周周", 20 );
$b = new School ( "DZ", 20, 50, 2 );
echo $a->show () . "<br>";
echo $b->show ();

?>

⑩ php共享成员变量

self::function1()访问方法
$this->属性 访问属性
在类的内部访问方法用::
访问属性是->
还有你应该在class a的下面这样写
public $a;把变量设置为类的属性,才能用$this->a在类的内部获取到

热点内容
算法牛人左 发布:2025-02-05 15:31:02 浏览:438
php筛选功能 发布:2025-02-05 15:29:09 浏览:165
ip匹配服务器 发布:2025-02-05 15:10:35 浏览:909
php语法后 发布:2025-02-05 15:10:34 浏览:59
oppor9s怎么压缩文件 发布:2025-02-05 15:00:34 浏览:639
苹果耳塞怎么改安卓也能用 发布:2025-02-05 14:50:54 浏览:558
安卓如何鉴别手机真假 发布:2025-02-05 14:28:15 浏览:121
ffmpeglinux编译 发布:2025-02-05 14:28:04 浏览:545
服务器如何做界面 发布:2025-02-05 14:27:23 浏览:291
访问学者单位推荐意见 发布:2025-02-05 14:13:05 浏览:853