- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
首先我知道这个问题在这里不止一次出现过:
但是我修复所有 E_NOTICE 的次数越多(正如人们所说的那样),我就越注意到:
举个例子:
假设您使用 MongoDB PHP 驱动程序并且您有一个 MongoDate
名为 ts
的类 var 中的对象在代表数据库集合中的单行的类中。现在你像这样访问这个变量:$obj->ts->sec
但是 PHP 抛出了一个合适的 (E_NOTICE) 因为 ts
在这种情况下,它本身未定义为对象,因为该特定行没有 ts
field 。所以你认为这没关系,这是期望的行为,如果它没有设置返回 null,我会在解释器自己的机器人工作之外自己处理它(因为你将它包装在一个 date()
函数中,它只返回 1970
如果 var 是 null
或 none-object
)。
但现在要像另一个开发人员真正希望我那样修复 E_NOTICE,因为有任何 E_NOTICE 都是非常糟糕的,并且如果不根据错误执行它会使代码变慢。所以我在 $obj
中创建了一个新函数类名为 getTs
我给它 3 行,字面意思是除了检查 ts
之外什么都不做。 var 是一个 MongoDate
对象并返回它,如果它是...
为什么?难道 PHP 不能在其更快的解释器中为我做这件事,而不是在应用程序本身的运行时做这件事吗?我的意思是我必须在我的代码中添加无用的颠簸,几乎是空函数来检测我实际上只是用 PHP 自身返回能力处理的变量 null
或查看他们的 instanceof
当我真的需要时(当它对上述功能的操作和行为至关重要时)并且不要让我开始 isset()
我添加了大约 300 行 isset()
s,它失控了。我当然得做这个getTs
功能,因为你不能这样做:
class obj{
public $ts = new MongoDate();
}
我要么必须存储 ts
在 __constructor
内(我对此不太满意,我正在使用很多魔法)或使用函数来检测它是否已设置(我现在这样做)。
我的意思是我理解为什么我应该修复:
null
变量)但是,如果您已经测试了您的代码并且您知道它是安全的并且只会按照您希望的方式工作,那么修复所有 undefined index
的意义何在?或 none-object
错误?是不是添加了一堆 isset()
s 和 2 行函数实际上对您的代码进行了微优化?
在使我的一半网站符合 E_NOTICE 标准后,我注意到实际上它现在使用了更多的 CPU、内存和时间...那么处理每个 E_NOTICE 错误而不仅仅是那些错误的真正意义何在?
谢谢你的想法,
最佳答案
通过使用 isset()
,您确实确实获得了更好的性能。不久前,我做了一些基准测试,结果只是隐藏错误的速度大约慢了 10 倍。
http://garrettbluma.com/2011/11/14/php-isset-performance/
也就是说,性能通常不是 PHP 的关键因素。 做,个人让我发疯的是无提示错误。
当解释器选择不将某事标记为错误(这可能导致不稳定)时,这是一个巨大的问题。 PHP 尤其倾向于
也许我只是对这类事情过于自以为是,但我以前曾被这些无声的错误所困扰。 我建议始终在错误报告中包含 E_NOTICE。
关于php - E_NOTICE : How useful is it REALLY to fix every one?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510328/
E_ALL ^ E_NOTICE 和 E_ALL & ~E_NOTICE 有什么区别? 据我了解,它们都排除了 E_NOTICE 级别的错误报告。但是在 PHP.ini 中使用了 &~ 形式,而我在很
我更喜欢在打开 E_NOTICES 的情况下进行开发,但是在处理数组索引时,我经常不得不编写过多的、过于冗长的代码。如何在启用 E_NOTICES 的情况下用更少的代码编写此代码。 禁止通知 if (
Looks like a lot of people did not understand the question, the notice I am getting is not about $fr
我尝试使用 laravel 在 mysql 中插入数据,但收到错误 ErrorException (E_NOTICE)试图获取非对象的属性,我不知道问题出在哪里,请帮助我。 我的 Controller
作为一名开发人员,我在打开 E_NOTICE 的情况下工作。不过最近有人问我为什么要修复 E_NOTICE 错误。我能想到的唯一原因是纠正这些问题是最佳实践。 还有其他人有任何理由证明花费额外的时间/
举例说明: 在Windows环境下:原本在php4.3.0中运行正常的程序,在4.3.1中为何多处报错,大体提示为:Notice:Undefined varialbe:变量名称.&nb
我应该在实时服务器上启用 E_NOTICE 吗? 正如我在 Why should I fix E_NOTICE errors? 中看到的那样 每个人都再次使用 isset()省略通知。我读过专业人士,
我正在编写自己的 var_dump 以满足某些可能只适用于我并且有问题的要求。 代码检查对象、数组等,最后进入一个阶段,它认为它留下了一个数字、一个字符串或一个 bool 值。 当然,一个字符串实际上
我有一个 PHP 脚本需要执行数小时,有时由于某些原因(例如执行需要连接到互联网的脚本时出现网络问题等),执行过程会停止一段时间后做了错误的事情(并且它总是导致 E_NOTICE 当进程走向错误的方向
我保证,我知道最好不要忽略错误。运行 XML-Sitemaps 生成器会点击没有有效 session 信息的 URL 来取悦 CodeIgniter。结果是每个被抓取的页面都有一个 E_NOTICE
通常 php 脚本在 E_NOTICE 之后继续运行,有没有办法在函数的上下文中将此提升为 fatal error ,也就是说我只需要在我的函数中通知退出而不是在核心 php 函数中退出,也就是说全局
我已经从 heroku 克隆了我的项目,并且正在使用 wampserver 和 composer 版本 2。有人可以帮助我理解为什么会出现此错误。 在 PackageManifest.php 第 13
我现在遇到的问题是很难找到真正的错误,因为发现了太多的 E_NOTICE。我们的服务器上有将近 600 个脚本复杂的站点,我为处理其中的大量站点做了很多工作,但仍然有很多。 每当错误百分比过高时,我都
首先我知道这个问题在这里不止一次出现过: Why should I fix E_NOTICE errors? Why should I fix E_NOTICE errors? Pros and co
这确实是一个非常简单的问题,我如何将 undefined variable 传递给函数而不会出现 E_NOTICE 错误? 当将 undefined variable 传递给诸如 isset() 之类
谁能解释一下 error_reporting(E_ALL); 和 error_reporting(E_ALL & ~E_NOTICE); 之间的区别? 我注意到,当我从 E_ALL 更改为 E_ALL
有哪些更好的方法可以避免应用程序逻辑中出现大量 isset(),并在需要时保留查看调试消息的能力 (E_NOTICE)? p> 首先假设:E_NOTICE 不是错误,而是用词不当,实际上应该是 E_D
对于 Symfony2 项目,我必须在博客文章和所谓的平台之间建立关系。平台根据您用于查看站点的域定义特定过滤器。例如:如果您通过 url first-example.com 加入该站点,该站点将仅提
我想使用 simpleTest 编写一个测试,如果我正在测试的方法导致 PHP E_NOTICE“undefined index : foo”,该测试将失败。 我尝试了 expectError() 和
我收到此错误:function split() deprecated list ($kk, $vv) = split( ' ', $buf, 2); 当我用 explode 或 preg_split
我是一名优秀的程序员,十分优秀!