好的,所以基本上我正在阅读这段源代码并且不了解特定区域的目的。
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”的两个 while 循环清空了数组,但根据我的逻辑,第二个 while 循环甚至无法清空任何内容,因为第一个 while 循环已经完成了。
然后是getURLData方法的最后一行
self::$urlBits = $this->array_trim( $data );
做同样的事情但是如果传入的参数已经是空的怎么办?
很困惑!!!