Questions tagged «php»

有关PHP(一种广泛用于通用脚本语言,特别适合于Web开发)的问题。

3
我无法跟踪我的PHP Web应用程序的流程,因此变得越来越难以使用
我已经编程了几年,并且随着时间的流逝对C#和JavaScript变得非常熟悉。我有一些较大的C#和JavaScript项目,可以轻松浏览。我最近开始了一个PHP&AngularJS项目,该项目以前没有使用PHP的经验。 PHP方面的流程变得越来越难以跟踪(JavaScript方面更大,但很容易实现),当我尝试通过它进行思考时,我想象一个纠结的线程。一开始我犯的主要设计错误就开始堆积起来,影响着我的设计。实施任何新技术都将花费越来越长的时间。 我的工作期限很紧,发现编写好的DRY SOLID代码变得越来越困难。随着设计时间的增加,复制/粘贴代码块以使其行为略有变化变得越来越具有吸引力。每当我必须进行上下文切换(从一个项目然后回到这个项目)时,也需要很长时间才能回到代码库,每当我回到该项目上工作时,我都会感到恐惧。 我可以采取什么步骤来解决这个问题?另外,还可能需要花费额外的时间来证明其合理性,因为我的老板不是开发人员,也不熟悉开发或软件的生命周期,因此解释起来可能比平时更为困难。

4
错误抑制不良做法吗?
在一个SO问题上,我在这里问了一些我不确定的代码,有人回答说:“ BTW,那里的代码很糟糕:它经常使用错误抑制符号(@)。” 有什么不好的做法吗?具有以下内容: $db=@new mysqli($db_info) or die('Database error'); ,它使我仅显示自定义错误消息。如果没有错误抑制,那么它将仍然显示以下典型的PHP消息: 警告:mysqli :: mysqli():php_network_getaddresses:getaddrinfo失败:此类主机未知。在一些\文件\路径上线6 以及“数据库错误”。 抑制错误总是不好的,如果是这样,那么上述问题到底是不好的? 更新:我正在使用的实际代码是: or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b><br />Error occurred on line <b>' . __LINE__ . '</b> of <b>' . __FILE__ . '</b>' …

3
什么是测试中的开发人员?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我最近正在与一名招聘人员交谈,该人员希望将我安排在一家公司中担任Test Developer的职位。从本质上讲,他听起来像一个职位,您可以摆弄新的编程技术,测试软件中的错误和改进,但是不必担心标准截止日期。您将在工作中变得很有创造力。 但是这种描述对我来说还是有点模糊。我从事Web开发已经有很多年了,主要是使用PHP。所以我想知道社区中的其他人是否更多地了解这些职位通常需要做什么。 我知道这可能不是适合该论坛的主题,但是这是我在Stack Exchange中可以找到的最合适的东西,如果没有关闭,我将不胜感激,因为在这里实际上没有其他地方可以询问它了。 。 我已经尝试过Google搜索,但是那里没有很多信息。那么测试中的开发人员到底是什么?

6
什么是最基本,最简单的协作开发平台(PHP项目)?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我需要使用codeigniter在相当普通的PHP应用程序上与4-5个程序员合作。我们在一个城市中有5个不同的地点,所有程序员的教育程度都不高,我假设他们中的大多数人从未使用过任何版本控制系统。 您是否可以推荐一个非常非常易于使用的平台来与像这样的项目进行协作?我所谈论的只是比共享保管箱文件夹更复杂的东西。

6
为什么在Web服务器上如此频繁地使用PHP?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 根据W3Techs,我的Web服务器使用PHP的比例高达76.9%的Web服务器: http://w3techs.com/technologies/overview/programming_language/all 我使用PHP的原因是惯于看到其他人在Web服务器上使用它。PHP到底是什么使它在Web服务器上无处不在? (请注意,此问题与以下问题类似,但朝着不同的方向:为什么Java不用于现代Web应用程序开发?)

3
GitHub上的Git项目依赖项
我已经在该框架之上编写了一个PHP框架和一个CMS。CMS依赖于框架,但是框架作为CMS文件中的自包含文件夹存在。我想将它们作为单独的项目维护在GitHub上,但是我不想在每次更新框架时都有更新CMS项目的麻烦。理想情况下,我希望CMS以某种方式将框架文件包含在预定义的子目录中,而不是物理地提交这些文件。 Git / GitHub有可能吗?如果是这样,我需要知道什么才能使其正常工作?请记住,我对Git有非常非常基础的经验-我可以使用Eclipse的Git插件制作存储库并提交,连接到GitHub,就这样。我目前正独自从事这些项目,因此到目前为止,我还不需要了解更多有关Git的信息,但是我希望将来向其他人开放它,我想确保自己做对了。 另外,对于具有依赖性的项目,理想的工作流程应该是什么?任何有关该主题的技巧也将不胜感激。如果您需要有关我的设置的更多信息,请在评论中提问。
14 php  git  github  dependencies 

4
什么时候应该使用模拟对象?
我已经阅读了很多有关TDD的内容,但是我仍然有疑问。例如,我有以下类图: 这是一个简单的示例,仅用于了解TDD和模拟对象。 我应该先写哪个测试?产品,然后行,最后,订购?如果这样做,我应该使用生产线和产品来测试订单还是应该使用模拟对象?我什么时候应该使用模拟对象?我应该在XP和TDD中使用UML吗? 我还没有这些东西。

7
PHP有什么好处?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 每个人都知道对某些编程语言有偏见的人。尤其是PHP,似乎受其过去和其他一些问题(例如,松散类型)的困扰,通常被称为非严肃的编程语言,不应用于专业应用程序。 在这种特殊情况下,PHP:您如何辩解使用PHP作为Web应用程序的所选编程语言?有什么好处,PHP在哪些方面比ColdFusion,Java等更好?
14 php 

4
为什么可以使用传统的手动测试时使用phpunit
当我制作一个Web应用程序时,我会在浏览器上测试我的作品,以查看是否收到任何错误并进行修复。我已经完成了复杂的应用程序,并且以这种方式进行的测试非常简单快捷。我已经在YouTube上观看了许多有关phpunit的视频,但找不到目的。为什么这个库有用?phpunit是否更适合蛋糕框架或zend之类的PHP框架?我不使用任何框架,只是核心php。phpunit对我有用吗?如果是,怎么办? 也有xdebug,但我不确定是否相关。

2
如何测试不可注入的代码?
因此,我在系统中使用了以下代码。目前,我们正在回顾性地编写单元测试(比我的观点迟来的要好得多),但是我不知道这将是可测试的吗? public function validate($value, Constraint $constraint) { $searchEntity = EmailAlertToSearchAdapter::adapt($value); $queryBuilder = SearcherFactory::getSearchDirector($searchEntity->getKeywords()); $adapter = new SearchEntityToQueryAdapter($queryBuilder, $searchEntity); $query = $adapter->setupBuilder()->build(); $totalCount = $this->advertType->count($query); if ($totalCount >= self::MAXIMUM_MATCHING_ADS) { $this->context->addViolation( $constraint->message ); } } 从概念上讲,这应该适用于任何语言,但是我正在使用PHP。该代码只是基于一个对象构建了一个ElasticSearch查询对象,而该Search对象又是从一个EmailAlert对象构建的。这些Search和EmailAlert只是POPO。 我的问题是,我不知道怎样才能模拟出的SearcherFactory(使用静态方法),也不是SearchEntityToQueryAdapter,它需要从结果SearcherFactory::getSearchDirector 和的Search实例。如何在方法中注入从结果中构建的内容?也许有一些我不知道的设计模式? 谢谢你的帮助!

2
超过16八百万的NPath复杂性是否现实?还是我损坏了工具?
我刚刚使用PHPMD(http://phpmd.org/)测量了一大段PHP代码(1153行),它告诉我代码的NPath复杂度为16244818757303303403077832757824。 在我看来,这似乎是一个疯狂的数字,这表明PHPMD可能已经以某种方式崩溃了。人类编写的一段代码甚至有可能具有如此高的NPath复杂性吗?圈复杂度为351。 两个可能重要的细节- 这是与HTML混合在一起的过程代码,PHPMD仅会测量面向对象的代码。为了解决这个问题,我用一个函数将整个文件包装在一个类中-这代表了如何使用它。 该文件由一系列嵌套的switch语句组成,并且在其中包含许多if..else语句-因此它确实非常复杂。 编辑 我想澄清的是,我不是在问PHPMD是否在骗我。我知道代码是一团糟,我只是想知道任何代码是否真的有那么糟糕。答案似乎是肯定的,这很有可能。
13 php  code-quality 

4
公司未加密密码时该怎么办
背景 我被合同帮助一家公司维护他们的服务器。我从事一些较小的PHP项目,但也研究性能问题,最近还扫描了黑客日志。 这些家伙已经运行了一段时间的服务器,并且在最后一刻拥有所谓的遗留应用程序。它使用魔术引号,全局变量(允许$id被覆盖$_GET['id']),使用.htaccess作为它们在某些情况下的唯一安全性,您可以为其命名。安全和编程的噩梦。 过去,我们一直被黑客入侵,大多数情况下是通过SQL注入进行攻击的,这种注入会运行SLEEP(99999999)命令并充当DOS攻击。幸运的是,他们没有运行“小鲍比表”, XKCD:http://xkcd.com/327/ 因此,我将他们易受攻击的SQL语句mysql_query()(不是mysqli)重新编写为PDO事务。我也分析查询为SLEEP和UNION,我们不使用,但注射有。到目前为止,一切都很好。 最新一期 最近,我们被告知,用户数据库中的记录正在发生变化,例如用户的电子邮件地址更改为垃圾邮件发送者的电子邮件地址。 我注意到他们的专栏没有last_modified专栏,所以我们甚至都不知道何时更改了它们,更不用说是谁了。我添加了该专栏,但这仅是第一步。 当我查看此表时,我发现密码没有被添加盐分甚至是散列,只是保存为纯文本。 客户沟通 作为承包商,我如何才能在整个情况中与他们接洽,而又不会像疯子一样挥舞手臂?有什么建议吗?我当时在想一种冷静的方法, 问题#1 概要 为什么这是一个问题 如果不固定怎么办 建议的修复 问题#2 概要 为什么这是一个问题 如果不固定怎么办 建议的修复
13 php  apache  security  mysql 

1
为什么没有工具可以在PHP中重载静态属性?
介绍 PHP使您可以通过在类中声明魔术方法来重载方法调用和属性访问。这将启用以下代码: class Foo { public function __get($name) { return 42; } } $foo = new Foo; echo $foo->missingProperty; // prints "42" 除了重载实例属性和方法外,从PHP 5.3.0开始,我们还可以static通过覆盖magic方法来重载方法调用__callStatic。 缺少的东西 可用功能中明显缺少的是过载静态属性的能力,例如: echo Foo::$missingProperty; // fatal error: access to undeclared static property 此限制已明确记录在案: 属性重载仅在对象上下文中起作用。这些魔术方法不会在静态上下文中触发。因此,不应声明这些方法static。从PHP 5.3.0开始,如果声明了一种魔术重载方法,则会发出警告static。 但为什么? 我的问题是: 是否出于技术原因当前不支持此功能?还是(颤抖的)政治原因? 过去是否有过任何中止尝试添加此功能的尝试? 最重要的是,问题不是 “如何在userland PHP中具有动态静态属性?”。也就是说,如果您知道__callStatic要共享的特别可爱的实现,则一定要这样做。

6
计划重写大型PHP项目的提示?
我决定完全重写多年来一直在研究和开发的PHP框架(使用MVC)。到目前为止,我的问题是我只想出一些主意,将它们作为票证放入Trac中,然后在以后添加它们-而不必担心框架本身的设计。随着时间的推移,这会导致一些问题,我认为重写会有所帮助,但是我不确定从哪里开始进行规划-我知道我不想使用Trac,而且我知道不仅需要机票和里程碑-但是我还需要什么? 我真的很想彻底计划这个重写,我想详细说明我想要的每个功能,它将去向何处以及如何将其连接到其他任何部分-但是我对此级别的规划没有经验。有什么建议吗?有什么程序可以帮上忙吗?我对Trac感到厌倦,我从未真正喜欢过它。 我知道我需要一份设计文档,但是我应该遵循某些布局吗?我还将需要错误跟踪,票证,里程碑等,但是除了Trac之外,我也不知道这有什么用。我确定还有更多需要,但我不知道要做什么,因此我们将不胜感激。

8
PHP如何面向对象?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我有机会与同事进行了有趣的对话。他们大多数是Flash操作脚本或Java开发人员。 我们讨论了php处理OOP的能力。我说过,PHP 5.2或5.3可以处理几乎所有OOP内容。我错了吗?我并不想获得是/否的答案,但我想听听开发人员的更多意见。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.