>  기사  >  php教程  >  Shen Yi 선생님의 특별 PHP 교육 노트(5)

Shen Yi 선생님의 특별 PHP 교육 노트(5)

WBOY
WBOY원래의
2016-08-30 09:21:091530검색

  이전 강의에 이어 새로운 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. 익명 수업 :  

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.