草庐IT

php - 在生产代码中使用反射不好吗?

我有一个Validator创建Validations实例的类类,其中包含所有验证方法。执行验证时,__call在Validator用于调度调用Validator->validate_method至Validations->method.例如,Validations中有一个方法称为length_of.当运行以下代码时:$v=newValidator();$v->validate_length_of(...);length_of在Validations中验证类被执行。为了保证__call不会尝试发送到无效或非公开的Validation方法,我使用ReflectionMethod检查指定的方

php - include()/require() with "side effects"是一种不好的做法吗?

正在做类似的事情_________________________//index.php...require("header.php");...__________________________________________________//header.phpprintHeader()functionprintHeader(){echo'something';...}_________________________是否考虑过要避免的不良做法?我个人认为执行一个require()(或者require_once()或者include(),这不是重点)call应该只添加一个“链接”

php - 静态函数不好——但是有什么选择呢?

在我的示例中,我使用的是PHP框架Yii2,但我认为这适用于大多数OO语言。我有一个ActiveRecord基类,我的大部分业务对象都从它扩展而来,例如项目。目前,如果我想要一个Project实例,我会调用Project::findOne(['id'=>$id]);findOne是ActiveRecord(Yii2框架的一部分)的静态方法。所以这是一种糟糕的形式,因为在编写单元测试时我不能轻易地模拟/stub这个调用的返回。但是解决这个问题的最佳方法是什么?我可以创建一个继承自ActiveRecord的类CActiveRecord并将静态调用包装在非静态调用中并在任何地方使用它-但我必

php - Laravel PDF : No block-level parent found. 不好

直到今天,我的代码都运行良好。我没有做任何更改,但突然我的pdf代码不起作用。我在laravel5.2中使用barryvdh/laravel-dompdf这个包。我删除了我的本地项目并从实时服务器下载,但我的本地计算机上仍然出现此问题。我的实时项目使用此代码运行良好。这是我的代码$pdf=App::make('dompdf.wrapper');$pdf->loadView('back_end.pdf_template.make_invoice',['order_info'=>$order_info,'order_details'=>$order_details]);return$pdf

php - 有很多参数的函数是不是不好的形式?还有什么选择?

我有一个查询数据库的搜索功能,有大约15个可选参数。显然这并不漂亮,调用它有点乱。PHP不允许重载方法,所以我一直在创建巨大的函数签名。我在其他地方看到了诸如创建参数类之类的建议:Disadvantagesofusingalotofparameters但这似乎太沉重了。我可以传入一个关联数组,但是虽然这减少了参数的数量,但我认为它不太容易遵循,因为没有内置文档说明数组中应该存在哪些键。有没有其他方法可以优雅地处理这个问题?通常在其他语言中,我会有一个非常丑陋的private方法,它最多接受十几个参数,然后创建同名的public方法,它接受这些参数的一个子集,并且内部调用私有(priva

java - 继承了一些不好的 Java 泛型

这是一个讨厌的问题,可能是设计不好。编写一组简单的图表组件(饼图、条形图和折线图)并且被一些泛型的东西噎住了。事先,我确定有许多JavaAPI可以完全执行我在这里尝试执行的操作(制图/报告/等),但是我对这个作为一般泛型问题很感兴趣;它涉及图表和报告组件这一事实是微不足道的。每个图表都继承自通用抽象基类Chart:publicabstractclassChart{privateListcomponents;//...restoftheChartclass}我们有TextendsChartComponent的原因是因为每个图表子类都将由1+个所谓的图表组件(条形图、折线图、饼形楔形图等)

java - Java 包名中的下划线——不好吗?

这个问题在这里已经有了答案:WhatistheconventionforwordseparatorinJavapackagenames?(6个答案)关闭8年前。对不起我的英语我觉得有时候是有必要的。在我看来,search_result_list、location_provider比searchresultlist、locationprovider更易读。文档说了什么?

java - Elasticsearch - EdgeNgram + highlight + term_vector = 不好的亮点

当我使用带有edgengram(min=3,max=7,front)+term_vector=with_positions_offsets的分析器时文档有text="CouchDB"当我搜索“couc”时我的重点是“cou”而不是“couc”我的亮点似乎只在最小匹配标记“cou”上,而我希望在确切的标记上(如果可能的话)或至少是找到的最长标记。无需使用term_vector=with_positions_offsets分析文本即可正常工作删除term_vector=with_positions_offsets对性能有什么影响? 最佳答案

java - 紧循环不好吗?

程序中的紧密循环不好吗?我有一个应用程序有两个用于游戏物理模拟器的线程。一个更新游戏线程和一个渲染线程。渲染线程通过使线程hibernate几毫秒(以达到我想要的帧速率)而受到限制,而updateGame线程(根据一些物理方程更新我在游戏中的对象位置)之前被10毫秒的sleep节流.但是,我最近解除了updateGame线程的节流,现在我已经取消了10毫秒的sleep,我的对象运动模拟似乎更加真实。是热循环还是紧循环不好?privateclassUpdateTaskimplementsRunnable{privatelongpreviousTime=System.currentTime

java - 在 URL 中公开数据库内部 ID 是一种不好的做法吗?

在URL中公开数据库内部ID是一种不好的做法吗?例如,假设我有一个users表,其中每一行都有一些ID(主键)。公开URLmyapp.com/accountInfo.html?userId=5(其中5是实际主键)会被视为“坏事”吗?为什么?还假设我们正确地防御了SQL注入(inject)。我最感兴趣的是与JavaWeb技术堆栈(因此使用java标签)相关的答案,但一般性答案也会很有帮助。谢谢。 最佳答案 这取决于您解析URL的方式。如果你允许盲目的SQL注入(inject),那就不好了。您只需验证用户输入的ID。Stackexcha