php成员变量
‘壹’ php类中的函数能否调用类中成员变量
php类中的函数能调用类中成员变量。即使没有具体对象,也能调用类的静态成员函数和成员变量。
‘贰’ php中如何给成员变量,赋值
classren_min
{
private$aaa;
function_loveyou($inp)
{
$this->aaa=$inp+1;
return$this->aaa;
}
}
$ceshi=newren_min;
echo$ceshi->_loveyou(800);
‘叁’ 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 类中 通过成员方法访问成员变量有什么好处,我知道是争对于安全性,但不能解释怎么个安全法,
将成员变量私有化,并使用公有接口去访问,是为了保证数据的正确性,保证对象能够正常工作。
对象有两个作用,一是保存数据,二是拥有操作数据的方法。对象就是一个黑盒子,隐藏数据操作细节,而我们可以轻松地处理和取得数据,不需要了解内部的处理过程。对象的数据只由它自己去处理,没有外部干涉,这样的数据是安全的可信任的。
如果我们能够任意改变对象的数据,就是对其密封性的破坏。在"外力"的作用下,对象拥有的数据类型和值发生改变,很可能会影响其内部的处理过程,严重时会发生错误。
示例一:
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中属性就是变量,方法就是函数.这句话对吗
属性又称为成员变量,可以认为是c语言的变量,方法可以认为是c语言的函数。
但是java和c语言最大的不同是把函数和变量封装在类里面。
‘陆’ 瀹氢箟涓涓姹借溅绫 3涓鎴愬憳鍙橀噺 鍝佺墝 棰滆壊 阃熷害
PHP镄
<?
//鍒涘缓涓涓姹借溅绫
class Car
{
//涓嬮溃鏄姹借溅镄勬垚锻桦睘镐
var $name; //姹借溅镄勭墝瀛
var $color; //姹借溅镄勯滆壊
var $speed; //姹借溅镄勯熷害
//瀹氢箟涓涓鏋勯犳柟娉鍙傛暟涓虹墝瀛$name銆侀滆壊$color鍜岄熷害$speed
function __construct($name, $color, $speed)
{
//阃氲繃鏋勯犳柟娉曚紶杩涙潵镄$name缁欐垚锻桦睘镐$this->name璧嫔埯浣垮
$this->name=$name;
//阃氲繃鏋勯犳柟娉曚紶杩涙潵镄$color缁欐垚锻桦睘镐$this->color璧嫔埯浣垮
$this->color=$color;
//阃氲繃鏋勯犳柟娉曚紶杩涙潵镄$age缁欐垚锻桦睘镐$this->speed璧嫔埯浣垮
$this->age=$speed;
}
//姹借溅灞炴
function showcar()
{
echo "鎴戠殑鐗屽瓙锛".$this->name." 棰滆壊锛".$this->color." 阃熷害锛".$this->speed."<br>";
}
}
//阃氲繃鏋勯犳柟娉曞垱寤3涓瀵硅薄$p1銆乸2銆$p3,鍒嗗埆浼犲叆涓変釜涓嶅悓镄勫疄鍙备负鐗屽瓙銆侀滆壊鍜岄熷害
$p1=new Car(钬瀹濋┈钬濓纴钬濈槠镩测, 220);
$p2=new Car(钬娉曟媺鍒钬濓纴钬濋粦镩测, 280);
$p3=new Car(钬淇濇椂鎹钬濓纴钬濋粍镩测, 290);
//涓嬮溃璁块梾$p1瀵硅薄涓镄勬苯杞
$p1->showcar();
//涓嬮溃璁块梾$p2瀵硅薄涓镄勬苯杞
$p2->showcar();
//涓嬮溃璁块梾$p3瀵硅薄涓镄勬苯杞
$p3->showcar();
?>
杈揿嚭缁撴灉涓猴细
鎴戠殑鐗屽瓙锛氩疂椹棰滆壊锛氱槠镩查熷害锛220
鎴戠殑鐗屽瓙锛氭硶𨰾夊埄棰滆壊锛氶粦镩查熷害锛280
鎴戠殑鐗屽瓙锛氢缭镞舵嵎棰滆壊锛氶粍镩查熷害锛290