이전 강의에 이어 새로운 godconfig 클래스를 생성하고 prj_name(프로젝트 이름)과 prj_author(작성자) 두 가지 속성을 설정한 다음 표준 입력(stdin)을 얻어 결과를 클래스에 저장했습니다.
알겠습니다. 이 강의 이름이 좀 이상합니다. 저는 "게으른 암"에 걸렸습니다. godconfig 클래스의 속성을 작성하는 것을 잊어버리면 프로그램이 계속 실행됩니까? 대답은 여전히 가능합니다. PHP는 자동으로 수업에 속성을 추가합니다(이것은 교사 PPT의 원래 단어입니다).
GOON, 계속 게으르게 지내세요. 이제 더 이상 godconfig 클래스를 만들고 싶지 않습니다. 여기서는 $gc = new stdClass()
이전 요점은 매우 간단하므로 코드 및 실행 결과를 게시하지 않겠습니다.
다음으로 또 다른 실제 요구 사항이 있습니다. 함수 파일에 functionTC() //임시 클래스의 의미(이 이름은 교사가 임의로 선택함)라는 메서드를 작성합니다. 반환된 임시 클래스를 나타냅니다.
첫 번째 글쓰기 방법:
<?<span style="color: #000000;">php </span><span style="color: #0000ff;">require</span>('godconfig.php'); <span style="color: #008000;">//</span><span style="color: #008000;">引入gonconfig这个文件</span> <span style="color: #0000ff;">class</span> godinit <span style="color: #008000;">//</span><span style="color: #008000;">创建一个类,godinit</span> <span style="color: #000000;">{ </span><span style="color: #0000ff;">static</span> <span style="color: #800080;">$v</span>="god version is 1.2"; <span style="color: #008000;">//</span><span style="color: #008000;">声明一个静态属性$VERSION</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> init() <span style="color: #008000;">//</span><span style="color: #008000;">静态方法 init</span> <span style="color: #000000;"> { </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc = new godconfig(); //实例化godconfig里定义的类 //$gc = new stdClass();</span> <span style="color: #0000ff;">echo</span> "input your project name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_name = fgets(STDIN); //从标准输入中获取用户输入的字符并赋值给实例化属性$prj_name <span style="color: #800080;">$prj_name</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_name</span> <span style="color: #0000ff;">echo</span> "input your author name?".<span style="color: #ff00ff;">PHP_EOL</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">$gc -> prj_author=fgets(STDIN);</span> <span style="color: #800080;">$prj_author</span> = <span style="color: #008080;">fgets</span>(STDIN); <span style="color: #008000;">//</span><span style="color: #008000;">重新获取用户输入,并赋值给$prj_author</span> <span style="color: #0000ff;">echo</span> json_encode(TC(<span style="color: #0000ff;">array</span>('prj_name'=><span style="color: #800080;">$prj_name</span>,'prj_author'=><span style="color: #800080;">$prj_author</span><span style="color: #000000;">))); }</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> __callStatic(<span style="color: #800080;">$p1</span>,<span style="color: #800080;">$p2</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">echo</span> "error function"<span style="color: #000000;">; } } </span>?>
동시에 god_func7 파일에 TC 메소드를 작성합니다.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #ff0000;">$get_class = new</span><span style="color: #000000;"><span style="color: #ff0000;"> stdClass();</span> </span><span style="color: #ff0000;">foreach ($p as $k => $v){ $get_class -> $k=$v; } return $get_class<span style="color: #000000;"><span style="color: #ff0000;">;</span> }</span>
그럼 원래 작성 방법과 정확히 동일한 결과를 살펴보겠습니다.
이제 Godconfig를 빌드하지 않고도 구현할 수 있습니다.
두 번째로 쓰는 방법이 있습니다. 너무 게으른 나머지 기억이 나지 않습니다. 글쎄, 이건 진짜 게으름이다.
세 번째 작성 방법은 PHP7 익명 클래스와 관련이 있습니다.
PHP의 생성자는 __construct(parameter) {}입니다. 이 함수는 클래스가 인스턴스화될 때 먼저 실행됩니다. 다음으로 PHP7의 익명 클래스를 살펴보겠습니다(실제로는 미스터리가 없습니다. 소위 익명이라는 것은 이름이 없다는 것을 의미합니다). 유일한 차이점은 익명 클래스가 외부 변수를 사용하려면 전달되어야 한다는 것입니다. 그렇지 않으면 사용할 수 없습니다.
<?<span style="color: #000000;">php </span><span style="color: #008000;">//</span><span style="color: #008000;">functions for PHP7</span> <span style="color: #0000ff;">function</span> genConfig(<span style="color: #800080;">$cnt</span>):<span style="color: #0000ff;">string</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #008080;">file_put_contents</span>(<span style="color: #008080;">getcwd</span>().'/god.json',<span style="color: #800080;">$cnt</span>).' of bytes is written.'.<span style="color: #ff00ff;">PHP_EOL</span>.'god config is created'<span style="color: #000000;">; } </span><span style="color: #0000ff;">function</span> TC(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">class</span>(<span style="color: #800080;">$p</span>){ <span style="color: #008000;">//</span><span style="color: #008000;">this is 匿名类</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$p</span><span style="color: #000000;">){ </span><span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$p</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$k</span> => <span style="color: #800080;">$v</span><span style="color: #000000;">){ </span><span style="color: #800080;">$this</span> -> <span style="color: #800080;">$k</span> = <span style="color: #800080;">$v</span><span style="color: #000000;">; } } }; }</span>
사실 위 내용은 전혀 게으르지 않고 코드를 너무 많이 작성해서 ^_^;
결과를 살펴보겠습니다.
저작권 설명: 노트 정리함 Desperado는 자유를 사랑하고 공유를 옹호합니다. 하지만 이 메모는 Shen Yi 선생님의 www.jtthink.com (Programmer on the Road) "PHP 악마 훈련 과정의 첫 번째 단계"에서 가져온 것입니다. 이 학습 노트는 블로그에 처음 게시되었습니다. 다시 인쇄해야 하는 경우 선생님의 작업을 존중하고 Shen Yi 선생님의 서명과 강좌 소스 주소를 보관하시기 바랍니다.
잘못된 지식 포인트:
1. stdClass: PHP 내장 최상위 클래스로 실제로는 기본 클래스이며 공백입니다. 아무것도 아님. 일시적으로 사용하면 다른 곳에서는 거의 사용되지 않습니다. 그러면 새 엔터티 클래스를 전혀 만들 필요가 없습니다. 새로운 stdClass를 직접 생성하세요.
2. foreach는 배열을 순회합니다
3. 익명 수업 :