基本的に、私はこのソースコードを読んでいますが、特定の領域の目的を理解していません。
class URL_Processor
{
private static $urlPath;
private static $urlBits = array();
/*
Gets data from the current URL
@return Void
*/
public function getURLData()
{
$urldata = (isset($_GET['page'])) ? $_GET['page'] : '' ;
self::$urlPath = $urldata;
if( $urldata == '' )
{
self::$urlBits[] = 'home';
self::$urlPath = 'home';
}
else
{
$data = explode( '/', $urldata );
while ( !empty( $data ) && strlen( reset( $data ) ) === 0 )
{
array_shift( $data );
}
while ( !empty( $data ) && strlen( end( $data ) ) === 0)
{
array_pop($data);
}
self::$urlBits = $this->array_trim( $data );
}
}
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;
}
}
したがって、基本的には、getURLData メソッドで 'array_shift' を使用した 2 つの while ループを理解すると、配列が空になりますが、私の論理によれば、最初の while ループが既に実行されているため、2 番目の while ループは何も空にすることさえできません。
次に、メソッド getURLData の最後の行
self::$urlBits = $this->array_trim( $data );
同じことをしますが、渡された引数がすでに空の場合はどうなりますか?
非常に混乱!!!