Questions tagged «php»

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

6
PHP和性能
我总是听到PHP用于中小型网站,而.NET和Java用于企业应用程序。我的问题是关于PHP的。为什么PHP不是企业Web应用程序的好选择?是否因为Web应用程序变得更大而使PHP变慢,因为它是一种解释语言? 我知道企业界会选择.NET或J2EE,因为它们与其产品集成在一起,并且由于后端服务等原因。但是,如果我们只有PHP来构建站点和Web应用程序,那么我们如何使用它来实现良好的性能呢?大网站? 简而言之,PHP的性能和网站的大小之间是否有关系?什么因素使PHP不适合用于大型站点?

7
使用SQL查询构建器有哪些优势?
使用查询生成器而不是使用原始SQL有什么好处吗? 例如 $q->select('*') ->from('posts') ->innerJoin('terms', 'post_id') ->where(...) vs: SELECT * FROM posts WHERE ... 我看到许多框架都使用这些抽象层,但是我无法理解其好处。
17 php  sql  frameworks 


5
为什么PHP函数签名如此不一致?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我正在查看一些PHP函数,但我不禁注意到以下内容: <?php function foo(&$var) { } foo($a); // $a is "created" and assigned to null $b = array(); foo($b['b']); var_dump(array_key_exists('b', $b)); // bool(true) $c = new StdClass; foo($c->d); var_dump(property_exists($c, 'd')); // bool(true) ?> 注意array_key_exists()和property_exists()功能。在第一个中,属性名(数组的键)是第一个参数,而在第二个中,属性名是第二个参数。凭直觉,人们会期望它们具有相似的签名。这可能会导致混淆,并且通过进行此类更正可能会浪费显影时间。 PHP或任何与此相关的语言是否不应该考虑使相关功能的签名保持一致?
17 php  naming  functions 

10
在编码标准方面与项目负责人存在分歧[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 3年前关闭。 因此,我与过去1年的项目负责人一起致力于一个新项目。 最初,我们有自己的子项目,这些子项目位于单独的git repos中,我与他的代码几乎没有交互,因此代码的气味不会打扰我。大约6个月后,由于我在该项目中发挥了更大的作用,因此我开始维护他的代码并向其中添加功能。 现在,我是两个子项目的首席开发人员(团队正在成长;他仍然在我之上),这些事情困扰着我,我想照顾他们,但被拒绝了: 没有花括号,大写函数,混合引号用法(带有隐藏逻辑的双引号和单引号),不使用===,具有巨大功能的巨大类。底线可能更好。 依靠PHP的选项来关闭通知/警告。代码中充满了未经检查的变量和数组键用法。变量在ifs内部定义。 以上两个问题的论点: 不想对人强制执行编码风格。 被视为一种语言功能,可以使代码更短/更有效。 我认为需要制定一些规则,并且代码应具有防御性。我提供了使用PHPStorm的默认设置进行格式设置,使用花括号和社区认可的命名约定的功能。 我想使两个项目使用相同的准则,因为它们是密不可分的。 我错了吗?我会强加我的个人喜好吗?

7
我应该加密数据库中的数据吗?
我有一个客户,我将为此目的做一个有关患者护理,管理患者,咨询,历史记录,日历以及有关此内容的Web应用程序。 问题在于这是敏感数据,患者病史等。 客户坚持要在数据库级别加密数据,但是我认为这会降低Web应用程序的性能。(但也许我不必为此担心) 我已经阅读了有关健康问题的数据保护的法律(葡萄牙),但是对此并不十分明确(我只是问他们这个问题,我在等待他们的回应)。 我已经阅读了以下链接,但是我的问题不同,是否应该加密数据库中的数据。 我在加密数据时预见到的一个问题是,我需要一个密钥,这可能是用户密码,但是我们都知道用户密码的方式(12345等),并生成我必须存储的密钥它在某个地方,这意味着程序员dba,无论可以使用它什么,对此有何想法? 即使向用户密码添加随机盐也无法解决问题,因为我可以随时访问它,因此可以解密数据。
16 php  mysql  encryption 

3
如何在PHP和MySql中处理货币值?
我继承了在MySQL数据库之上用PHP编写的大量旧代码。我注意到的是该应用程序doubles用于存储和处理数据。 现在,我遇到了许多帖子,提到double由于四舍五入的错误,它们不适合货币操作。但是,对于如何在PHP代码中处理货币值并将其存储在MySQL数据库中,我尚未找到完整的解决方案。 在专门用PHP处理资金时,是否有最佳实践? 我正在寻找的东西是: 数据应如何存储在数据库中?列类型?尺寸? 正常的加,减数据应如何处理。乘法还是除法? 我应该什么时候取整值?舍入多少舍入(如果有)? 处理大货币值和低货币值之间有区别吗? 注意: 一个非常简化的示例代码,说明了我在日常生活中可能会遇到的货币价值(为简化起见,忽略了各种安全问题。当然,在现实生活中,我永远不会像这样使用我的代码): $a= $_POST['price_in_dollars']; //-->(ex: 25.06) will be read as a string should it be cast to double? $b= $_POST['discount_rate'];//-->(ex: 0.35) value will always be less than 1 $valueToBeStored= $a * $b; //--> any hint here is welcomed $valueFromDatabase= $row['price']; //--> price …

2
PHP中的非法:是否存在OOP设计原因?
下面的接口继承在PHP中是非法的,但我认为它在现实生活中将非常有用。下面的设计是否存在实际的反模式或已记录的问题,PHP正在保护我免受其侵扰? <?php /** * Marker interface */ interface IConfig {} /** * An api sdk tool */ interface IApi { public __construct(IConfig $cfg); } /** * Api configuration specific to http */ interface IHttpConfig extends IConfig { public getSomeNiceHttpSpecificFeature(); } /** * Illegal, but would be really nice to have. …

2
创建REST API错误响应模型和错误代码系统的最佳方法是什么?
我的REST实现将使用以下结构在JSON中返回错误: { "http_response":400, "dev_message":"There is a problem", "message_for_user":"Bad request", "some_internal_error_code":12345 } 我建议创建一个特殊的响应模型,在该模型中,我可以传递所需的属性值(dev_message,message_for_user,some_internal_error_code)并返回它们。在代码中将类似于以下内容: $responseModel = new MyResponseModel(400,"Something is bad", etc...); 此模型应如何显示?是否应该在仅传递文本信息的地方实现例如successResponse()这样的方法,并且那里的代码默认为200?我坚持这一点。这是我的问题的第一部分:我是否需要实现此模型,这是一种很好的做法吗?因为现在,我只是直接从代码返回数组。 第二部分是关于错误代码系统。错误代码将在文档中进行描述。但是我遇到的问题是代码。管理错误代码的最佳方法是什么?我应该在模型中编写它们吗?还是最好创建单独的服务来处理此问题? 更新1 我已经实现了响应的模型类。这类似于格雷格的答案,逻辑相同,但是另外,我在模型中对错误进行了硬编码,这是它的样子: class ErrorResponse { const SOME_ENTITY_NOT_FOUND = 100; protected $errorMessages = [100 => ["error_message" => "That entity doesn't exist!"]]; ...some code... } 我为什么要这样做?那又是为了什么呢? 代码看起来很酷: return new ErrorResponse(ErrorResponse::SOME_ENTITY_NOT_FOUND ); …
15 php  mvc  rest  api 


2
在全部捕获或基本异常类中记录异常是否更明智?
我正在重构一个相当大的Web应用程序。主要问题之一是不一致的错误处理,我正在尝试提出一个明智的策略。我已经通过set_error_handler创建了一个自定义错误处理程序,该处理程序从本质上转变了ErrorExceptions中的 PHP错误以及一个直接从Exception继承的自定义基本异常类。 在生产环境中,我正在通过set_exception_handler使用通用异常捕获功能,并且将要添加异常记录*的功能。我的难题是在基本异常类或全部捕获中执行实际日志记录的位置。 我想到了将其记录在全部功能中的几个原因: 代码中有很多异常需要转换为基本异常类的适当子代。在此之前,并非所有异常都会被记录。 总括而言,以某种方式感到更自然,基本异常类不应该仅仅这样做。(这可能是一个单一的责任原则,但可能只是一种误导) 以及登录基本异常类的原因之一: 目前,全部收集仅用于生产。将其引入我们的其他环境(开发,测试)很容易,但是这需要进行一些调整,因为错误在每个环境中的处理方式不同,在生产中将其转换为404/503错误页面。 在哪里记录异常有可接受的做法吗? *日志记录将首先涉及写入文本文件,并且可能会演变成发送某些类型异常的邮件。 @unholysampler的回答提示了一些说明: 我面对的是2 * 10 ^ 6 sloc代码库,其中包含许多我无法控制的第三方内容,而我确实有一些代码可以控制PHP中的preddates异常。而且还有一些糟糕的最新代码,我们正从长期的沉重压力中恢复过来,在这些压力下,我们实际上不得不停止思考并被黑了。 我们正在积极进行重构以解决所有不一致问题,并引入明智的错误处理方法,但这将需要一些时间。在达到正确处理错误的程度之前,我对该怎么办更感兴趣。在某个时候,我可能会问另一个关于明智的例外策略的问题。 记录背后的主要动机是,每当生产中发生任何问题时,都会在我的手机上收到一封电子邮件。我不在乎数据转储是否会很大,如果确实如此,我将有一份cron作业,不时地删除旧的。

4
为什么Facebook在PHP旁边使用C ++?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 导致Facebook需要在PHP之外使用C ++的主要原因是什么?我想知道我是否要创建一个有很多访问者的网站,我也需要使用C ++吗?

7
对ASP.NET Ajax,jQuery和JavaScript感到困惑
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 昨天,我从ASP.NET 4书中阅读了有关ASP.NET Ajax和jQuery的几章,我发现这些框架非常有趣,并决定进一步了解它们。 今天,我从图书馆借了一些有关Ajax和JavaScript的书。似乎ASP.NET Ajax与Ajax不同,而jQuery似乎是“新” JavaScript。 这是否意味着我可以跳过JavaScript并直接学习jQuery? 另一方面,我借用的非ASP.NET Ajax书似乎仅适用于客户端Web编程,并且看起来与我从ASP.NET Ajax中学到的完全不同。如果我是ASP.NET开发人员,我想我应该坚持使用ASP.NET Ajax而不是客户端Ajax,对吗?那PHP呢?是否有类似于ASP.NET Ajax的“ PHP Ajax”? 不是我懒于学习其他工具,而是我只想专注于正确的工具。

9
什么时候需要使用框架?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我是Web编程的新手,目前我正在学习PHP。我想知道什么时候需要使用像CakePHP这样的PHP框架?这个和其他类似的PHP框架为我提供了什么?使用框架成为专业人士真的重要吗? 我可以创建自己的框架来提供我喜欢的功能吗?
15 php  frameworks 

5
如何使用纯PHP构建模板系统?
我正在阅读关于stackoverflow的这个问题: /programming/104516/calling-php-functions-within-heredoc-strings 并且接受的答案说要做像这样的纯PHP模板: template.php: <html> <头> <title> <?= $ title?> </ title> </ head> <身体> <?= getContent()?> </ body> </ html> index.php: <?php $ title ='演示标题'; 函数getContent(){ 返回'<p> Hello World!</ p>'; } include('template.php'); ?> 对我来说,以上内容在某种意义上来说并不是很好的结构,即template.php依赖于其他脚本中定义的变量。而且您在执行操作时使用include()执行代码include('template.php')(与使用include()包含未立即执行的类或函数相反)。 我觉得更好的方法是将模板包装在函数中: template.php: <?php 功能模板($ title,$ content){ ob_start(); ?> <html> <头> <title> <?= $ title?> </ …
15 php  templates 

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.