1
treedon 2017-01-24 09:35:38 +08:00
啥意思 ?
|
2
foursking 2017-01-24 09:39:20 +08:00
你是担心什么?和系统或者其他类库的函数冲突还是担心不存在? 前者的话你使用 namespace 就行,后者的话函数不是公共引入的嘛,真的不放心就 function_exists 判断吧,不过个人觉得没必要
|
3
HanSonJ 2017-01-24 09:42:24 +08:00 1
如果是作为一个包,建议使用,毕竟不确定是否会跟第三方包冲突
如果只是用于自己项目,可以不使用 |
4
ioioioioioioi OP @HanSonJ 自己的项目,倾向于不使用,不然要写好多 if
|
5
HanSonJ 2017-01-24 09:47:00 +08:00
@ioioioioioioi #4 问题是,你也不会有这么多全局方法吧,面向对象编程为主
|
6
joeke 2017-01-24 09:55:38 +08:00
自己写一个类的时候,会把,但是不至于每个都写
|
7
Jakesoft 2017-01-24 10:43:54 +08:00
是的,用命名空间, \vendr\package\funcname();
不过这个年代最好还是面向对象编程吧,配合一个好的 ide (当然我是在说 phpstorm ), autocomplete 、 type inspect 等不要太爽。 |
8
Jakesoft 2017-01-24 10:45:37 +08:00
还有 git integration ,(额,听说说英文有提升逼格...)
|
9
ioioioioioioi OP @Jakesoft 自己常用的函数,用命名空间,觉得太累。比如, ip() , 用上命名空间后,可能就是 \MyProject\Helpers\ip()
|
10
barbery 2017-01-24 11:33:56 +08:00
从代码健壮性来考虑,要!
|
11
1762628386 2017-01-24 13:21:56 +08:00
最好别,到时候你等你用了,如果真有 2 个重名的方法,返回值不一样,你都不知道是什么错,你不写 function_exists 至少会报致命错误!!!!!
|
12
jianzhiyao020 2017-01-24 13:50:09 +08:00
如果,为了兼容性是要的, PHP 有些版本不支持某些函数,但是你又想要实现一模一样的功能的话
|
13
cxbig 2017-01-24 15:02:28 +08:00
哪怕自己写 binary 做 so 文件,最好也用 Object 封装,图方便可以全用 static 。
单纯的 fn 集合至少要加个唯一的前缀,如 FANN 系列 http://php.net/manual/en/book.fann.php |
14
ioioioioioioi OP @cxbig 因为引用别人的库都会有前缀,加入的 class 也会有 namespace , 所以自己的项目里独有的东西倾向于不加前缀。
|
15
mhycy 2017-01-24 15:42:01 +08:00
防御式开发“不应”用于此处。
代码问题就该老老实实抛出异常。 就像不应使用 try catch 来捕获因代码文件缺失而导致的异常,这样会隐藏问题的准确位置。 |
16
cxbig 2017-01-24 21:38:07 +08:00
@ioioioioioioi 除非你有信心一个项目做到底。不然当下图省事,后续接手的人就很痛苦。
个人不建议直接写全局 fn ,哪怕只有一个也要放进 Object 里。 |
18
cxbig 2017-01-25 01:19:38 +08:00
@msg7086
所以我们团队代码审查里的一个重要指标就是检查 PHPDoc ,会严格要求开发者把所有类里的方法和属性的用途描述清楚。命名规范这些更是挑剔。 甭管你多大牌,只要有团队成员不能理解就不给过。 长期看可以节省了很多维护成本。 |
20
lslqtz 2017-01-25 08:21:44 +08:00
我觉得不应该做 兼容老版本的话可以在函数里用一个特定的来根据版本“转发”自带函数
冲突问题应该让代码抛出致命错误 |