Underscore in php function

吃可爱长大的小学妹 提交于 2019-11-29 09:34:20

问题


What does it mean when a PHP function name begins with an underscore?

for example: __construct()

I know what the construct means but I've seen other places where the function begins with an underscore, or a double underscore and I'm just not sure of the significance.


回答1:


It means that PHP calls it implicitly.

It's called a 'Magic Method'

Also, it's two underscores, not one.

Learn more here: PHP Magic Methods




回答2:


In PHP, functions start with two underscores usually have special meanings. From the manual:

PHP reserves all function names starting with __ as magical. It is recommended that you do not use function names with __ in PHP unless you want some documented magic functionality.

For example __construct() is a special method which is called automatically while initializing an object.

Se also: http://php.net/manual/en/language.oop5.magic.php




回答3:


There's also a common naming "coding style" which uses one initial underscore to indicate methods or properties are private/protected. I think it's pretty widespread.




回答4:


As noted in other answers, the double underscore is used for "magic" methods. The idea is that the user would never intentionally use two underscores for a method name, so there is little risk of collision. The reason it isn't a single underscore, I believe, is that the single underscore was a popular convention for private methods in the bad(der) old days, before the 'private' keyword came along to enforce OO privateness.




回答5:


In codeigniter, if you start a method in a controller with an underscore, the router will know not to allow it to be accessed from the url.



来源:https://stackoverflow.com/questions/1820973/underscore-in-php-function

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!