Ⅰ php中 unset删除对象中的私有属性后 用isset判断这个属性是否存在,但是一直返回true
原因在于,在__isset方法中,对house_owner属性是否存在进行了判断,而unset操作只是将值和变量名之间的关系解除,并没有把属性本身删除。也就是说property_exists()方法,是判断属性是否存在,并不是属性是否有值。所以在调用isset时,每次都调用__isset魔术方法,而property_exists()方法始终返回true,所以会导致判断时,始终为true。
Ⅱ php 读取文件不存在返回404
两个方法:
第一个你程序上判断文件是否存在,存在正常,不正常给用户跳转一个页面(不要直接跳转首页)
第二个服务器端(Apache和iss)
为Apache Server设置 404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可:ErrorDocument 404 /notfound.php
iss设置静态404错误页面的方法则比较简单,在IIS管理器中右键单击要管理的网站,打开“属性”中的“自定义错误信息”页,为“404”设定相应的错误信
息页即可。不过,此处在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码。
Ⅲ php类里,某个方法的参数,没有定义成类的属性,那这个方法的参数是以哪种形态存在的 默认成了类的属性吗
1、这个$a和$b是类中函数add的形式参数,离开里函数就不能使用了。因为形参变量只有在函数被调用时分配内存。调用结束了就立刻释放了内存。
而类的属性,只要是在类的范围内各个方法都可以调用。比如
<?php
class Match{
public $c = 2;
public function add($a,$b){
return $this->c;
}
public function get_c(){
return $this->c;
}
}
类属性$c可以在add和get_c两个方法都能调用,所以你说“方法参数默认为了类的属性”是不正确的。
2、方法的参数不用定义成对象的属性(是“类的属性”吧?)。根据第一点,函数的形参和类属性没关系。
Ⅳ php对象访问不存在的类属性
使用get()和set()而不使用public的成员变量,是因为我们设计类的时候要遵循这样的原则:
提供类的人要尽量将类中有什么隐藏起来,只告诉使用者你能做什么
使用类的人不关心你的类中有什么,只关心类提供了什么功能
所以设计类的时候要尽量不提供public的成员变量,最好一个都没有,只提供接口
这条原则其实不仅是代码规范的问题,放到工作中,这就是多项目组或多部门之间合作的准则
这条原则也绝对不是某个独自编码的程序狼一拍脑袋就想出来,这是经历过有组织开发过工作的程序猿才能设计出来的。
————————————————————————————————————————————————————————————
这个问题其实很简单,比如
setAge(int age){
if(age<1||age>120)
throw new Exception(" 你输入的年龄不合法");
}else{
this.age=age;
}
这个是public变量做不到的,安全是其中一个原因,另外楼主你要是学过Hiberante和Spring的话,就会知道
一些类的变量,即使是public的,也必须写上set方法,否则就出错,框架设计的时候就这么要求的
所以别人都这么做的时候,你这么做只会有好处而不会有坏处,这就是标准