<code> class study{ private $name; private $age; function say(){ echo "我的名字是:".$this->name.",我的年龄是:".$this->age ; } function __set($k,$v){ echo "1111"; } } $lisi=new study(); $lisi->age=100;</code>
我按老师视频里书写的,视频里老师的zend没有报错,而我的报错了,说age是私有属性....,难道因为视频是11年的所以,如今变化很大?还是需要什么设置?我发现我按老师说的很多魔术方法都会使用时报错,很苦恼~求助!!
回复内容:
<code> class study{ private $name; private $age; function say(){ echo "我的名字是:".$this->name.",我的年龄是:".$this->age ; } function __set($k,$v){ echo "1111"; } } $lisi=new study(); $lisi->age=100;</code>
我按老师视频里书写的,视频里老师的zend没有报错,而我的报错了,说age是私有属性....,难道因为视频是11年的所以,如今变化很大?还是需要什么设置?我发现我按老师说的很多魔术方法都会使用时报错,很苦恼~求助!!
楼主的调用没有错啊。
假设有一个类,类中有一个私有变量$name
<code><?php class People{ private $name; public function __set($key = '', $value = ''){ echo "here"; } } $obj = new People(); $obj->name = '文艺青年阿虚V';</code>
按照常理面向对象是不允许你这样调用的
<code>$obj->name = '文艺青年阿虚V'; </code>
PHP中__set的功能就是让你可以这么做,具体的流程是这样的,当PHP解析器看到你正在使用对象调用一个私有变量,这时它本想着报错呢,可是又发现你的类中有一个__set()方法,于是它就不报错,而自动执行__set()方法了
上面的__set()方法其实很简陋,只echo "here";了,既然它在上面所说的这种情况下自动调用,那我就可以在这种情况下完善一下__set()方法,让它去做你想干的事。
根据你的say()方法,我猜是你的__set方法内缺了一行$this->$k = $v;
如果仍然有问题,确认你的php版本,__set
方法是php5中有的,你不会找了一个很古老的4.x的版本吧?
然后作为属性重载方法,必须把方法的访问控制声明为public,如果你的视频教程没有提到这点,那么是一个非常不严谨的教程,我建议你赶紧换。见: http://php.net/manual/zh/language.oop5.overloading.php 当然了,由于php为了向下兼容,所以即使你不写public的访问控制,它默认也会声明称public,然而这是一个不可依赖的特性,你不知道未来PHP是否还会兼容这种写法
?太彻了 private是私有属性 只能在类里面调用
你写的没错啊,就是因为age是私有属性才会有__set()
与__get()

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Atom editor mac version download
The most popular open source editor

Dreamweaver Mac version
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 English version
Recommended: Win version, supports code prompts!
