개발! 딱 깔끔하고 센스있게!

PHP 구조 함수와 정적 함수 본문

개발 스크랩 메모/PHP

PHP 구조 함수와 정적 함수

렉사이 2020. 12. 28. 22:39

나는 PHP 속의 구조함수에 대해 어떻게 일하느냐에 대해 다소 곤혹스러웠다.

나는 구조 함수를 가지고 있는 종류가 있는데, 내가 새로운 대상을 예화하면 이 종류를 호출할 것이다.

$foo = new Foo($args); 

유형 Foo 에서 contruct ($params) 를 사용하여 적당한 초기화 코드를 실행합니다.

그러나 내가 정적 함수를 종류로 호출할 때 다시 구조 함수를 호출할 것이다.

$bar = Foo::some_function(); //runs the constructor from Foo 

구조함수 실행을 초래할 것이며, 새로운 Foo 대상을 창설할 때 마련된 대상을 초기화 코드를 실행할 것이다.

나는 구조기를 누락한 작업의 원리가 아닌가?또는 내가 정적 함수 호출할 때, construct () 을 방지할 수 있는 방법이 있습니까?

내가 마땅히 ‘ 공장 ’ 함수를 써서 대상을 대신하여 초기화해야 합니까?만약 그렇다면 구조함수의 의미는 무엇입니까?

편집:나는 사진첩 (createu photo.php) 과 한 구역을 업로드할 수 있으며, 그들은 사진첩 (viewu photos.php) 을 볼 수 있다.

양식을 제출할 때:

$photo = new Photo($_FILES['photo'], $_POST['arg1'], ect..); 

사진 구조기 생성 및 사진 저장.하지만 viewu photo.phphphp에서 호출할 때:

$photo = Photo::find_by_id($_POST['id']) //user-defined function to query database 

이것은 사진의 구조 함수 운행을 초래합니다!

대답

나는 너의 문제를 반복할 수 있는 무엇이 있는지 모르겠다.

http:codepad.org/h2TMPYUV

코드:

class Foo { function __construct(){ echo 'hi!'; } static function bar(){ return 'there'; } } echo Foo::bar(); //output: "there" 
Comments