0

私は PHP をもっと使いこなそうとしているので、Michael Peacock の PHP 5 Social Networking という本を手に取りました。この本は興味深いように見えましたが、コードの詳細には触れませんでした。私が理解しようとしている機能は、

    public function getURLData()
{
    $urldata = ( isset( $_GET['page'] ) ) ? $_GET['page'] : '' ;

    $this->urlPath = $urldata;

    if( $urldata == '' )
    {
        $this->urlBits[] = '';
        $this->urlPath = '';
    }
    else
    {
        $data = explode( '/', $urldata );

        while ( !empty( $data ) && strlen( reset( $data ) ) === 0 )
        {
            //NOTES: php array_shift — Shift an element off the beginning of array
            array_shift( $data );
        }


        while ( !empty( $data ) && strlen( end( $data ) ) === 0)
        {
            array_pop($data);
        }

        $this->urlBits = $this->array_trim( $data );
    }
}

これはより大きなクラスの一部であり、$_GET['page'] は次のようなものです: relationship/mutual/3. 私の主な質問は、else セクションで何が起こっているかです。空の配列インデックスを削除しているとは思いますが、それにも疑問があります。

どんな助けでも大歓迎です。

編集:クラスの一部でもあるarray_trim関数を追加

    private function array_trim( $array )
{
    while ( ! empty( $array ) && strlen( reset( $array ) ) === 0)
    {
        array_shift( $array );
    }

    while ( !empty( $array ) && strlen( end( $array ) ) === 0)
    {
        array_pop( $array );
    }

    return $array;
}
4

1 に答える 1

1
    public function getURLData()
{

「ページ」を取得します。このデータは、URL から $_GET によって取得できます。たとえば、http://mysite.com/ ? page=contact です。

「ページ」が設定されている場合は $urldata に割り当てられ、それ以外の場合は $urldata=''

    $urldata = ( isset( $_GET['page'] ) ) ? $_GET['page'] : '' ;

    $this->urlPath = $urldata;

    if( $urldata == '' )
    {
        $this->urlBits[] = '';
        $this->urlPath = '';
    }
    else
    {

$urldata のすべての部分文字列が「/」で分割された配列を作成しています

        $data = explode( '/', $urldata );

配列 $data が空でない場合 (存在しない要素にアクセスすると例外が発生します)、または最初の要素の長さが 0 の場合、配列から最初の要素を削除します。

        while ( !empty( $data ) && strlen( reset( $data ) ) === 0 )
        {
            //NOTES: php array_shift — Shift an element off the beginning of array
            array_shift( $data );
        }

配列 $data が空でない場合 (存在しない要素にアクセスすると例外が発生します)、または最後の要素の長さが 0 の場合、配列から最後の要素を削除します。

        while ( !empty( $data ) && strlen( end( $data ) ) === 0)
        {
            array_pop($data);
        }

array_trim はカスタム関数です。何が機能するかはわかりませんが、おそらく何らかのトリミングも行うでしょう

        $this->urlBits = $this->array_trim( $data );
    }

}

于 2013-05-19T19:45:26.207 に答える