PHP reserved keywords allowed in namespace? (public, private, default)

谁都会走 提交于 2019-12-22 17:47:24

问题


PhpStorm is highlighting the following namespace as an error.

<?php

namespace App\Http\Controllers\Public;

Error: Expected: identifier

In general. Are reserved keywords like public, function, class not acceptable for namespacing?


回答1:


The PHP manual hints that as of PHP 7.0.0 these keywords are allowed as property, constant, and method names of classes, interfaces and traits, except that class may not be used as constant name, which also incorporate the requested keyword public.

List of reserved keywords, which you can't use for namespacing:

__halt_compiler, abstract, and, array, as, break, callable, case, catch, class, clone, const, continue, declare, default, die, do, echo, else, elseif, empty, enddeclare, endfor, endforeach, endif, endswitch, endwhile, eval, exit, extends, final, for, foreach, function, global, goto, if, implements, include, include_once, instanceof, insteadof, interface, isset, list, namespace, new, or, print, private, protected, public, require, require_once, return, static, switch, throw, trait, try, unset, use, var, while, xor

A potential workaround to fix this issue is to add an extra character to the word or use the plural form of the word. Another opportunity would be to go one level up in the namespace and use the keyword as a prefix PublicFooController. (or even suffix, if you prefer that)

My intention was to scope my web app into public (for guests and visitors) and private (for private needs) area.
I went for namespace App\Http\Controllers\Frontend and namespace App\Http\Controllers\Backend instead of trying to incorperate the words public and private in to my namespacing, even if I personally think these generally fits better to my needs, because both have frontend and backend. But... Anyway, this keeps me off having trouble organizing my files and namespaces the way I would do, when I would use public and private.



来源:https://stackoverflow.com/questions/44219644/php-reserved-keywords-allowed-in-namespace-public-private-default

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