2014-10-29 5 views
0

PHP 코드죄송합니다 절차 적 프로그래밍 다음 PHP입니다 Appraoch

<?php 
$t = new two(); 
class Two extends One { 
} 
class One { 
} 

Fatal error: Class 'two' not found in /opt/lampp/htdocs/Dev_Learning/php/OO/01_class/04_extendsTest.php on line 4

자바

public class ClassDefTest { 
public static void main(String args[]) { 
    Two t = new Two(); 
} 
} 

class Two extends One { 
} 

class One { 
} 
+1

하지만 시도하기 전에 클래스를 정의합니다! 자바 예에 이어, 나는 그런 식으로 다시 쓸 것 –

+4

참고 절차의 ___되지 ___

<?php class SomethingBetter { public static function main() { $t = new Two(); echo "Kinda OK"; } } class Two extends One {} class One {} $test = SomethingBetter::main(); // echoes Kinda OK 

+0

클래스를 정의하기 전에 클래스를 정의해야합니다. 즉, 변수로 인스턴스화 할 수 있습니다. $ t = new two(); –

답변

2

당신이 실제를 작성하기 전에 개체를 인스턴스화 때문에 점점 오류입니다 클래스

PHP 스크립트가 위에서 아래로 실행되므로 컴파일러/인터프리터는 먼저 아직 정의되지 않은 클래스의 객체를 인스턴스화하려고 시도합니다.

<?php 

class Two extends One { 
} 
class One { 
} 

$t = new Two(); 

위의 예는 효과가 있습니다. HERE PHP OOP에서 초보자를위한 튜토리얼을 찾을 수 있습니다.

ALSO : PHP는 실제로 대소 문자를 구분하지 않지만 일부 경우는 예외이지만 PHP 코드가 처음으로 보이는 사람은 코드를 "깨끗하고"읽기 쉽도록 유지하는 것이 좋습니다. 그래서 초보자가 그것을 본다면, 그는 그것을 이해해야합니다. 위와 같이 하시겠습니까? new Two()은 't'가 대문자입니다.

희망이 도움이됩니다. : D

+0

네가 맞다. 마침내 PHP가 해석 된 언어라는 것을 알았으므로 PHP는 늦은 바인딩을 지원하지 않는다. – Satya

+0

아니요 ... PHP C, C# 또는 Java와 같은 사용자의 avarage 언어가 아닙니다. 서버에서 해석 한 스크립트 언어이며 HTML 코드로 출력됩니다. 한 번에 한 줄씩 위에서 아래로 순차적으로 실행됩니다. –

+0

P.S : 찾으시는 답변이 맞으면 다른 사용자가이를 활용할 수 있도록 동의하십시오. 그러면 질문이 해결 된 것으로 표시 될 수 있습니다. 고맙습니다! 다른 질문에 대해서는 저에게 연락 주저하지 말고 :) –

0

엄밀히 말하자면 두 가지 예는 동일하지 않습니다. ==`Two`

아니, OOP, 즉 two``하는 요점
+0

내 Java 코드에 생성자가 없습니다. 왜 PHP 코드에서 새 생성자를 추가 했습니까? 객체를 생성하는 동안 JRE와 생성자에 의해 초기화 된 main() 메소드가 인스턴스화됩니다. – Satya

+0

OK, 변경했습니다. 그건 당신의 예제에서 동등하지 않은 삽화 일뿐입니다. 같은 방식으로 다시 작성하면 같은 결과가 나옵니다. Java에서도 정의되지 않은 클래스의 인스턴스를 만들 수는 없습니다. –

관련 문제