programing

모든 좋은 PHP 개발자가 대답할 수 있는 질문

kingscode 2022. 12. 28. 22:24
반응형

모든 좋은 PHP 개발자가 대답할 수 있는 질문

는 모든 좋은 질문들을 훑어보고 있었다.Net Developer는 대답할 수 있어야 하며, 이 질문의 내용과 접근법에 매우 감명받았습니다.그래서 저는 같은 정신으로 PHP Developer에게 이 질문을 합니다.

훌륭한 PHP 프로그래머가 어떤 질문 대답할 수 있어야 한다고 생각하십니까?

편집 : 이 질문은 사용자 고유성이 없고 프로그래밍 커뮤니티 전체에 서비스를 제공하기 위한 것이므로 커뮤니티 Wiki로 표시합니다.

좋은 답변 기다리겠습니다.

메모: 사람들이 언어에 대해 새로운 것을 배울 수 있도록 댓글에 제시된 질문에도 답해 주십시오.

물론 이 질문은 다른 곳에서 훔쳤지만(어디서 읽었는지 기억이 나지 않는다) 재미있다고 생각했다.

Q: 무엇이T_PAAMAYIM_NEKUDOTAYIM
A: 스코프 분해능 연산자(이중 콜론)입니다.

경험이 많은 PHP'er는 그것이 무엇을 의미하는지 즉시 알 수 있습니다.경험이 적은(히브리어가 아닌) 개발자는 이 내용을 읽고 싶어할 수 있습니다.

하지만 이제 더 심각한 질문이 있습니다.


Q: '경고: 헤더 정보를 수정할 수 없습니다 - 헤더는 이미 전송되었습니다'라는 경고의 원인은 무엇이며, 이를 방지하기 위한 좋은 방법은 무엇입니까?
A: 원인: 본문 데이터가 전송되어 헤더도 전송되었습니다.
예방:본문 데이터를 출력하기 전에 헤더 고유의 코드를 먼저 실행해야 합니다.실수로 공백이나 다른 문자를 보내지 않도록 하십시오.


Q: 이 쿼리의 문제점은 무엇입니까?"SELECT * FROM table WHERE id = $_POST[ 'id' ]"
A:1. SQL 주입에 취약합니다.쿼리에서 사용자 입력을 직접 사용하지 마십시오.일단 소독부터 하세요.사전 준비문(PDO) 2.모든 열(*)을 선택하지 말고 모든 열을 지정합니다.이는 주로 미래에 BLOB 열이 추가될 때 쿼리가 메모리를 차지하지 않도록 하기 위한 것입니다.


Q: 이 if 문장의 문제점은 무엇입니까?if( !strpos( $haystack, $needle ) ...
:: strpos$120을 처음 이는 $120의 값일 수 .이 위치는 다음과 같습니다.0 .부터0false해결책은 엄격한 비교를 사용하는 것입니다.if( false !== strpos( $haystack, $needle )...


Q: 이 if 스테이트먼트를 작성하기 위해 권장되는 방법은 무엇이며, 그 이유는 무엇입니까?
if( 5 == $someVar ) ★★★★★★★★★★★★★★★★★」if( $someVar == 5 )
A: 전자는 2개의 등호를 사용하는 것을 잊어버렸을 때 실수로 $someVar를 5에서 $someVar로 할당하는 것을 방지합니다($someVar = 5에러가 발생하지만, 후자는 발생하지 않습니다.


Q: 다음 코드가 지정됩니다.

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

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

의인가...의치치 엇엇? ???$a ★★★★★★★★★★★★★★★★★」$b능능 호호 ?유 ??? ?? ???
:: $a4 ★★★★★★★★★★★★★★★★★」$b3전자는 $arg가 참조에 의해 전달되기 때문에, 후자는 함수의 반환값이 인수의 초기값이 (참조가 아닌) 복사이기 때문입니다.


OOP 고유의

Q: 다음 두 가지 차이점이 무엇입니까?public,protected ★★★★★★★★★★★★★★★★★」private래스정??? ??
:: public사람", "모든 사람", "모든 사람", "모든 사람"에게 사용할 수 있도록 합니다.protected는 클래스 를 자기 및 파생 클래스인 '클래스할 수 있게 .private는 클래스 멤버를 클래스 자체에서만 사용할 수 있도록 합니다.


Q: 이 코드의 문제점은 무엇입니까?

class SomeClass
{
    protected $_someMember;

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

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

A: 정적 메서드는 클래스를 인스턴스화하지 않고 실행할 수 있기 때문에 정적 메서드는 $this에 액세스할 수 없습니다.


Q: 인터페이스와 추상 클래스의 차이점은 무엇입니까?
A: 인터페이스는 구현 클래스와 인터페이스를 호출하는 오브젝트 간의 계약을 정의합니다.추상 클래스는 이를 확장하는 클래스에 대해 특정 동작을 미리 정의합니다.어느 정도까지는 계약으로 간주될 수도 있는데, 이는 존재하는 특정 방법을 의미하기 때문이다.


Q: 주로 getter와 setter를 정의하고 동작을 실행하는 메서드를 사용하지 않고 내부 멤버에 직접 매핑하는 클래스는 어떤 문제가 있습니까?
A: 오브젝트가 다른 용도 없이 고귀한 어레이로 기능하기 때문에 코드 냄새일 수 있습니다.


Q: 왜 PHP의 인터페이스 사용 구현이 차선책입니까?
A: PHP에서는 메서드의 예상되는 반환 유형을 정의할 수 없습니다.이것에 의해, 인터페이스는 거의 무효가 됩니다. :-P

확실한 보안 질문입니다!

(물론 php 웹 어플리케이션 보안은 훨씬 복잡합니다.)

  • SQL 주입에 어떻게 대처합니까?

mysql_real_escape_string()을 지정합니다.그런 다음 PDO를 학습하여 데이터베이스 벤더 간에 준비된 문장과 이식성을 활용합니다.

  • CSRF(Cross-Site Request Formature)에 대처하는 방법

중요한 작업을 보호하기 위해 모든 중요한 요청에 토큰을 추가합니다(사용자는 중요한 요청을 보내기 전에 양식을 확인해야 합니다).

  • XSS(Cross-Site Scripting)를 반영하여 저장하는 방법

처음에 htmlentities()가 좋습니다.

  • XXX 주입의 종류: LDAP 주입, XPath 주입 등...

XXX가 사용하는 「어휘」를 알고 나서, 삭제나 「체크 앤 거부」에 필요한 것을 제외해 둘 필요가 있습니다.

  • 합리적인 기능의 목록은 무엇입니까?

PHP 코드를 해석하거나(원격 파일에 포함될 수 있음) 시스템에서 명령을 실행하는 함수입니다.짧은 리스트와 불완전한 리스트는 exec(), pussal(), system(), popen(), eval(), preg_replace() 등입니다.

  • 파일 포함 위험에 어떻게 대처합니까?
  • 패스 횡단이란 무엇입니까?
  • 파일 업로드와 관련된 위험은 무엇입니까?

파일 또는 원격 리소스를 열 때 사용되는 매개 변수를 주의 깊게 확인해야 합니다.

  • PHP 구성을 강제하는 방법(즉, php.ini의 용도를 알고 계십니까?)

시간이 오래 걸리기 때문에 답변을 생략하고 PHP 매뉴얼을 읽어주세요.

  • 사용자 데이터 필터링에 대해서: sanitizingcheck-and-filtering의 차이점은 무엇입니까?

첫 번째는 침입을 덜 적대적인 것으로 바꿔놨어요두 번째 항목은 입력이 올바른지 확인하고, 그렇지 않으면 거부합니다.

"왜 다른 거 안 써?"

죄송합니다.누군가가말해야합니다.:)

php는 크로스 브라우저입니까?

(이것이 많은 사람들을 끌어모으는 것을 알지만, php 포럼에서 더 흥미로운 질문입니다.)

좋은 질문은 HTTP의 구조입니다.작업GET ★★★★★★★★★★★★★★★★★」POST다른 HTTP 통신들 중에서 데이터는 PHP 개발에 내재되어 있습니다.HTTP가 보다 넓은 컨텍스트에서 어떻게 동작하는지, 그리고 PHP가 어떻게 이것을 구현하는지 이해하는 것은 큰 도움이 됩니다.

==와 ===의 차이점은 무엇이며 ==를 사용하려는 이유는 무엇입니까?

가 왜 ''로 표시되는지 .2.53:

$a = 012;
echo $a / 4;

답변: 숫자 앞에 a가 붙는 경우0PHP에서는 이 숫자는 8진수(base-8)로 취급됩니다.따라서 8진수012 10을 10.

아직 아무도 그것에 대해 언급하지 않았지만, 이것은 모든 PHP 개발자가 길게 말할 수 있는 것이다.?는 왜?register_globals 나쁜가요?

php를 사용하여 사이트를 개발했는데 완전히 엉터리일 경우, 다음과 같은 문제가 발생합니다.

a) PHP 장애

b) 프로그래머 장애

사용자 입력을 회피하기 위한 베스트 프랙티스는 무엇입니까?(이 질문은 자주 나오는 것 같습니다)

  • $array의 "name" 요소를 호출할 때 올바른 것은 무엇입니까?

    • $array[name]
    • $array['name']

    둘 다 자주 작동하지만 인용된 형식만 정확합니다. define('name', 0);벌레가 날아다니는 걸 보고.네, 이렇게요.

  • 폼 요소를 어레이로 전송하려면 어떻게 해야 합니까?

    multiple 'multiple'에 빈 를 추가합니다.<input type="checkbox" name="checkboxes[]" /> "서버의 배열").$_POST['checkboxes'][0..n]하지 않지만 100% PHP를 통해 것보다 $_POST한 한'checkboxes'.$i★★★★★★ 。

  • mysql_, mysqli_ 또는 PDO?

    여기서 유일하게 잘못된 답은 mysql_ 라이브러리는 준비된 스테이트먼트를 하지 않으며 더 이상 악의 용량을 변명할 수 없다는 것입니다. 번 함수의 이름을 "이러다"가 됩니다mysql_real_escape_string()그냥 상처에 소금일 뿐이야.

는요?'''
"" "" "" "" ""?

"notepad, echo, microtime()"을 넘어서는 한 실제 애플리케이션/아이디어/프런트엔드는 그다지 중요하지 않습니다.10억 명 중 한 명은 항상 완벽한 코드를 작성하는 개발자를 고용할 가능성이 매우 낮습니다.또, 그 유닛의 테스트에서는, 에러나 병목 현상이 발생하기 전에 모든 에러나 보틀 넥을 검출해, 코드를 프로파일 하거나 스텝 해, 한정된 시간에 에러를 찾아낼 수 있는 사람이 필요하게 됩니다.(그것은 아마 모든 언어/플랫폼에 해당하지만, 나에게는 완전히 주관적으로 말하면 php 개발자들 사이에서는 조금 부족한 기술인 것 같습니다.)

Terry Chay는 기본적으로 모든 PHP 개발자가 알아야 할 것 및/또는 취업 면접에서 어느 정도 답변해야 할 것을 요약한 블로그 투고를 가지고 있다.

http://terrychay.com/article/php-coders.shtml

훌륭한 요약이라고 생각합니다.

이렇게 물어보고 싶어요

a) 캐싱은 어떻습니까?

b) 캐시는 어떻게 구성됩니까?

c) 추가 DB 쿼리를 실행하지 않으시겠습니까?(제가 PHP로 작성한 첫 번째 작업에서는 코멘트를 작성한 사용자의 이름을 얻기 위한 mysql_query interforeach였습니다.무시무시한 :)

d) register_productals가 나쁜 이유는 무엇입니까?

e) 코드에서 뷰를 분할하는 이유와 방법

f) "유도"의 주요 목적은 무엇입니까?

여기 기본적인 책들을 읽은 후 전혀 이해가 가지 않는 질문들이 있다.주입과 csx, strpos에 대한 모든 것을 웹상의 수천 개의 FAQ를 통해 며칠 사이에 알게 되었습니다.하지만 이 질문들에 대한 답을 찾을 때까지 제 코드는 정말 끔찍했습니다:)

사용자 입력을 직접 출력하면 안 되는 이유!

GET에서 직접 데이터를 인쇄하면 사이트 간 스크립팅(XSS) 취약성이 발생할 수 있습니다.따라서 항상 클라이언트로부터의 입력을 htmlsspecialchars() 경유로 송신해야 합니다.

의 차이점을 설명하다

추출()

폭발()

incomode()

다음 코드에 무슨 문제가 있나요?

$a = 2;
function foo()
{
    $a = 3;
}
foo();
echo $a;

언급URL : https://stackoverflow.com/questions/2118755/questions-every-good-php-developer-should-be-able-to-answer

반응형