gpt4 book ai didi

php - 每个优秀的 PHP 开发人员都应该能够回答的问题

转载 作者:IT老高 更新时间:2023-10-28 11:55:13 24 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。










锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。








我正在经历Questions every good .Net developer should be able to answer并且对这个问题的内容和方法印象深刻,因此本着同样的精神,我为 PHP 开发人员提出了这个问题。

什么问题你觉得应该好吗 PHP 程序员能够做出回应吗?

编辑 :我将这个问题标记为社区维基,因为它不是特定于用户的,它旨在为整个编程社区提供服务。

期待一些惊人的回应。

注意 :也请按照评论中的建议回答问题,以便人们也可以学习有关该语言的新知识。

最佳答案

不可否认,我从其他地方偷了这个问题(不记得我在哪里读过它)但认为它很有趣:

问:什么是T_PAAMAYIM_NEKUDOTAYIM ?
答:它的范围解析运算符(双冒号)

一个有经验的 PHP'er 立即知道它意味着什么。
经验不足(而非希伯来语)的开发人员可能需要阅读 this .

但现在更严重的问题是:

问:此警告的原因是什么:“警告:无法修改 header 信息 - header 已发送”,以及防止它出现的好方法是什么?
答: 原因:正文数据已发送,导致标题也被发送。
预防:在输出任何正文数据之前,请务必先执行头特定代码。确保您没有意外发送空格或任何其他字符。

问:这个查询有什么问题:"SELECT * FROM table WHERE id = $_POST[ 'id' ]" ?
答: 1.容易受到SQL注入(inject)攻击。切勿在查询中直接使用用户输入。先给它 sanitizer 。最好使用准备好的语句 (PDO) 2. 不要选择所有列 (*),而是指定每一列。这主要是为了防止查询占用内存,例如在将来某个时间添加 BLOB 列时。

问:这个 if 语句有什么问题:if( !strpos( $haystack, $needle ) ... ?
答: strpos返回它第一次找到 $needle 的索引位置,可以是 0 .自 0也解析为 false解决方法是使用严格比较:if( false !== strpos( $haystack, $needle )...
问:编写此 if 语句的首选方法是什么,为什么?if( 5 == $someVar )if( $someVar == 5 ) 答:前者,当您忘记使用 2 个等号 ( $someVar = 5 ) 时,它可以防止将 5 意外分配给 $someVar,并且会导致错误,后者不会。

问:鉴于此代码:

function doSomething( &$arg )
{
$return = $arg;
$arg += 1;
return $return;
}

$a = 3;
$b = doSomething( $a );

... $a 的值是多少和 $b在函数调用之后,为什么?
答: $a4$b3 .前者是因为 $arg 是通过引用传递的,后者是因为函数的返回值是参数初始值的副本(不是引用)。

OOP 特定

问: public有什么区别, protectedprivate在类定义中?
答: public使“每个人”都可以使用类(class)成员, protected使类成员仅对自身和派生类可用, private使类成员只对类本身可用。

问:这段代码有什么问题:
class SomeClass
{
protected $_someMember;

public function __construct()
{
$this->_someMember = 1;
}

public static function getSomethingStatic()
{
return $this->_someMember * 5; // here's the catch
}
}

答:静态方法不能访问 $this,因为静态方法可以在不实例化类的情况下执行。

问:接口(interface)和抽象类有什么区别?
答:接口(interface)定义了实现类 is 和调用该接口(interface)的对象之间的契约。抽象类为将扩展它的类预先定义了某些行为。在某种程度上,这也可以被视为契约(Contract),因为它保证了某些方法的存在。

问:主要定义 getter 和 setter 的类有什么问题,这些类直接映射到它的内部成员,而实际上没有执行行为的方法?
答:这可能是一种代码异味,因为该对象充当一个 ennobled 数组,没有太多其他用途。

问:为什么 PHP 对接口(interface)使用的实现不是最佳的?
答: PHP 不允许您定义方法的预期返回类型,这实际上使接口(interface)变得毫无用处。 :-P

关于php - 每个优秀的 PHP 开发人员都应该能够回答的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com