저는 PHP에서 생성자가 어떻게 작동하는지 혼동합니다.PHP 생성자와 정적 함수
나는 새 객체를 인스턴스화 할 때 호출되는 생성자가있는 클래스가 있습니다.
$foo = new Foo($args);
__construct($params)
Foo
에이라고하며 적절한 초기화 코드를 실행합니다.
그러나 클래스를 사용하여 정적 함수를 호출하면 생성자가 다시 호출됩니다.
$bar = Foo::some_function(); //runs the constructor from Foo
이 내가 새로운 Foo
객체를 생성 할 때 만 의도 된 개체 초기화 코드를 실행, 생성자가 실행됩니다.
생성자 작동 방법의 요점이 누락 되었습니까? 또는 정적 함수 호출을 만들 때 클래스를 사용할 때 __construct()
이 실행되지 않도록하는 방법이 있습니까?
개체 초기화 대신 "팩토리"기능을 사용해야합니까? 그렇다면 생성자의 핵심은 무엇입니까?
:: EDIT :: 사용자가 사진을 앨범 (create_photo.php) 및 앨범을 볼 수있는 영역 (view_photos.php)에 업로드 할 수있는 양식이 있습니다. 양식 제출시 :
$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..);
사진 생성자가 사진을 만들고 저장합니다. 그러나 view_photo.php에서, 내가 전화 할 때 :
$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database
이 사진의 생성자가 실행하는 원인이되는!
옳지 않을 수 있습니다. 정적 호출로 생성자가 호출되는 전체 코드를 제공하십시오! – mAu
실제 코드를 보여주십시오. 당신이 쓴 것이 정확하지 않습니다. –
생성자는 어떤 동작을 수행한다고 판단합니까? – markus