Improve code suffering from PHP 5.3's lack of support for foo()[]

I searched for /\$(\S+) = (.+?\(.*?\);)\n.*?\$\1\[/, ignored
everything involving isset(), unset() or array assigments, then
skimmed through the remaining results and changed things where they
made sense. These changes were not automated, so please review them.

Change-Id: Ib37b4c66fc57648470f151ad412210b3629c2538
This commit is contained in:
Bartosz Dziewoński 2016-02-17 20:54:59 +01:00
parent 1b7b3c452f
commit c161c46d26
28 changed files with 57 additions and 93 deletions

View file

@ -1307,8 +1307,7 @@ class Block {
# but actually an old subpage (bug #29797)
if ( strpos( $target, '/' ) !== false ) {
# An old subpage, drill down to the user behind it
$parts = explode( '/', $target );
$target = $parts[0];
$target = explode( '/', $target )[0];
}
$userObj = User::newFromName( $target );

View file

@ -2320,8 +2320,7 @@ class EditPage {
# Show a warning message when someone creates/edits a user (talk) page but the user does not exist
# Show log extract when the user is currently blocked
if ( $namespace == NS_USER || $namespace == NS_USER_TALK ) {
$parts = explode( '/', $this->mTitle->getText(), 2 );
$username = $parts[0];
$username = explode( '/', $this->mTitle->getText(), 2 )[0];
$user = User::newFromName( $username, false /* allow IP users*/ );
$ip = User::isIP( $username );
$block = Block::newFromTarget( $user, $user );

View file

@ -1949,9 +1949,9 @@ function mimeTypeMatch( $type, $avail ) {
if ( array_key_exists( $type, $avail ) ) {
return $type;
} else {
$parts = explode( '/', $type );
if ( array_key_exists( $parts[0] . '/*', $avail ) ) {
return $parts[0] . '/*';
$mainType = explode( '/', $type )[0];
if ( array_key_exists( "$mainType/*", $avail ) ) {
return "$mainType/*";
} elseif ( array_key_exists( '*/*', $avail ) ) {
return '*/*';
} else {
@ -1977,8 +1977,8 @@ function wfNegotiateType( $cprefs, $sprefs ) {
$combine = [];
foreach ( array_keys( $sprefs ) as $type ) {
$parts = explode( '/', $type );
if ( $parts[1] != '*' ) {
$subType = explode( '/', $type )[1];
if ( $subType != '*' ) {
$ckey = mimeTypeMatch( $type, $cprefs );
if ( $ckey ) {
$combine[$type] = $sprefs[$type] * $cprefs[$ckey];
@ -1987,8 +1987,8 @@ function wfNegotiateType( $cprefs, $sprefs ) {
}
foreach ( array_keys( $cprefs ) as $type ) {
$parts = explode( '/', $type );
if ( $parts[1] != '*' && !array_key_exists( $type, $sprefs ) ) {
$subType = explode( '/', $type )[1];
if ( $subType != '*' && !array_key_exists( $type, $sprefs ) ) {
$skey = mimeTypeMatch( $type, $sprefs );
if ( $skey ) {
$combine[$type] = $sprefs[$skey] * $cprefs[$type];

View file

@ -694,8 +694,7 @@ abstract class ApiBase extends ContextSource {
* @return mixed Parameter value
*/
protected function getParameter( $paramName, $parseLimit = true ) {
$params = $this->getFinalParams();
$paramSettings = $params[$paramName];
$paramSettings = $this->getFinalParams()[$paramName];
return $this->getParameterFromSettings( $paramName, $paramSettings, $parseLimit );
}

View file

@ -338,8 +338,7 @@ class ApiOpenSearch extends ApiBase {
return trim( $matches[1] );
} else {
// Just return the first line
$lines = explode( "\n", $text );
return trim( $lines[0] );
return trim( explode( "\n", $text )[0] );
}
}

View file

@ -1558,8 +1558,8 @@ abstract class DatabaseBase implements IDatabase {
// Special-case single values, as IN isn't terribly efficient
// Don't necessarily assume the single key is 0; we don't
// enforce linear numeric ordering on other arrays here.
$value = array_values( $value );
$list .= $field . " = " . $this->addQuotes( $value[0] );
$value = array_values( $value )[0];
$list .= $field . " = " . $this->addQuotes( $value );
} else {
$list .= $field . " IN (" . $this->makeList( $value ) . ") ";
}

View file

@ -301,8 +301,7 @@ class DatabaseMssql extends Database {
$res = $res->result;
}
$metadata = sqlsrv_field_metadata( $res );
return $metadata[$n]['Name'];
return sqlsrv_field_metadata( $res )[$n]['Name'];
}
/**

View file

@ -86,8 +86,8 @@ class FSFileBackend extends FileBackendStore {
$this->fileMode = isset( $config['fileMode'] ) ? $config['fileMode'] : 0644;
if ( isset( $config['fileOwner'] ) && function_exists( 'posix_getuid' ) ) {
$this->fileOwner = $config['fileOwner'];
$info = posix_getpwuid( posix_getuid() );
$this->currentUser = $info['name']; // cache this, assuming it doesn't change
// cache this, assuming it doesn't change
$this->currentUser = posix_getpwuid( posix_getuid() )['name'];
}
}

View file

@ -609,8 +609,7 @@ abstract class Installer {
# posix_getegid() *not* getmygid() because we want the group of the webserver,
# not whoever owns the current script.
$gid = posix_getegid();
$getpwuid = posix_getpwuid( $gid );
$group = $getpwuid['name'];
$group = posix_getpwuid( $gid )['name'];
return $group;
}

View file

@ -315,14 +315,13 @@ class JobQueueFederated extends JobQueue {
}
protected function doIsRootJobOldDuplicate( Job $job ) {
$params = $job->getRootJobParams();
$sigature = $params['rootJobSignature'];
$partition = $this->partitionRing->getLiveLocation( $sigature );
$signature = $job->getRootJobParams()['rootJobSignature'];
$partition = $this->partitionRing->getLiveLocation( $signature );
try {
return $this->partitionQueues[$partition]->doIsRootJobOldDuplicate( $job );
} catch ( JobQueueError $e ) {
if ( $this->partitionRing->ejectFromLiveRing( $partition, 5 ) ) {
$partition = $this->partitionRing->getLiveLocation( $sigature );
$partition = $this->partitionRing->getLiveLocation( $signature );
return $this->partitionQueues[$partition]->doIsRootJobOldDuplicate( $job );
}
}
@ -331,14 +330,13 @@ class JobQueueFederated extends JobQueue {
}
protected function doDeduplicateRootJob( IJobSpecification $job ) {
$params = $job->getRootJobParams();
$sigature = $params['rootJobSignature'];
$partition = $this->partitionRing->getLiveLocation( $sigature );
$signature = $job->getRootJobParams()['rootJobSignature'];
$partition = $this->partitionRing->getLiveLocation( $signature );
try {
return $this->partitionQueues[$partition]->doDeduplicateRootJob( $job );
} catch ( JobQueueError $e ) {
if ( $this->partitionRing->ejectFromLiveRing( $partition, 5 ) ) {
$partition = $this->partitionRing->getLiveLocation( $sigature );
$partition = $this->partitionRing->getLiveLocation( $signature );
return $this->partitionQueues[$partition]->doDeduplicateRootJob( $job );
}
}

View file

@ -289,9 +289,9 @@ class JobRunner implements LoggerAwareInterface {
$stats->timing( "jobqueue.pickup_delay.$jType", 1000 * $pickupDelay );
}
// Record root job age for jobs being run
$root = $job->getRootJobParams();
if ( $root['rootJobTimestamp'] ) {
$age = max( 0, $popTime - wfTimestamp( TS_UNIX, $root['rootJobTimestamp'] ) );
$rootTimestamp = $job->getRootJobParams()['rootJobTimestamp'];
if ( $rootTimestamp ) {
$age = max( 0, $popTime - wfTimestamp( TS_UNIX, $rootTimestamp ) );
$stats->timing( "jobqueue.pickup_root_age.$jType", 1000 * $age );
}
// Track the execution time for jobs

View file

@ -105,8 +105,7 @@ class MultiHttpClient {
* @return array Response array for request
*/
final public function run( array $req, array $opts = [] ) {
$req = $this->runMulti( [ $req ], $opts );
return $req[0]['response'];
return $this->runMulti( [ $req ], $opts )[0]['response'];
}
/**

View file

@ -94,7 +94,6 @@ class RiffExtractor {
* @return int
*/
public static function extractUInt32( $string ) {
$unpacked = unpack( 'V', $string );
return $unpacked[1];
return unpack( 'V', $string )[1];
}
};

View file

@ -791,8 +791,7 @@ class MemcachedClient {
* @param string $host
*/
function _dead_host( $host ) {
$parts = explode( ':', $host );
$ip = $parts[0];
$ip = explode( ':', $host )[0];
$this->_host_dead[$ip] = time() + 30 + intval( rand( 0, 10 ) );
$this->_host_dead[$host] = $this->_host_dead[$ip];
unset( $this->_cache_sock[$host] );

View file

@ -109,10 +109,10 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
$result = [];
foreach ( $reqs as $key => $req ) {
$parts = explode( '/', $req['url'] );
if ( $parts[1] === 'v3' ) {
$version = explode( '/', $req['url'] )[1];
if ( $version === 'v3' ) {
$result[$key] = $this->onParsoid3Request( $req, $idGeneratorFunc );
} elseif ( $parts[1] === 'v1' ) {
} elseif ( $version === 'v1' ) {
$result[$key] = $this->onParsoid1Request( $req, $idGeneratorFunc );
} else {
throw new Exception( "Only v1 and v3 are supported." );

View file

@ -134,8 +134,7 @@ class VirtualRESTServiceClient {
* @return array Response array for request
*/
public function run( array $req ) {
$responses = $this->runMulti( [ $req ] );
return $responses[0];
return $this->runMulti( [ $req ] )[0];
}
/**

View file

@ -34,8 +34,7 @@ class ExifBitmapHandler extends BitmapHandler {
function convertMetadataVersion( $metadata, $version = 1 ) {
// basically flattens arrays.
$version = explode( ';', $version, 2 );
$version = intval( $version[0] );
$version = intval( explode( ';', $version, 2 )[0] );
if ( $version < 1 || $version >= 2 ) {
return $metadata;
}

View file

@ -118,8 +118,7 @@ class GIFMetadataExtractor {
if ( strlen( $buf ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$extension_code = unpack( 'C', $buf );
$extension_code = $extension_code[1];
$extension_code = unpack( 'C', $buf )[1];
if ( $extension_code == 0xF9 ) {
// Graphics Control Extension.
@ -131,8 +130,7 @@ class GIFMetadataExtractor {
if ( strlen( $buf ) < 2 ) {
throw new Exception( "Ran out of input" );
}
$delay = unpack( 'v', $buf );
$delay = $delay[1];
$delay = unpack( 'v', $buf )[1];
$duration += $delay * 0.01;
fread( $fh, 1 ); // Transparent colour index
@ -141,8 +139,7 @@ class GIFMetadataExtractor {
if ( strlen( $term ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$term = unpack( 'C', $term );
$term = $term[1];
$term = unpack( 'C', $term )[1];
if ( $term != 0 ) {
throw new Exception( "Malformed Graphics Control Extension block" );
}
@ -182,8 +179,7 @@ class GIFMetadataExtractor {
if ( strlen( $blockLength ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$blockLength = unpack( 'C', $blockLength );
$blockLength = $blockLength[1];
$blockLength = unpack( 'C', $blockLength )[1];
$data = fread( $fh, $blockLength );
if ( $blockLength != 11 ) {
@ -206,8 +202,7 @@ class GIFMetadataExtractor {
if ( strlen( $loopData ) < 2 ) {
throw new Exception( "Ran out of input" );
}
$loopData = unpack( 'v', $loopData );
$loopCount = $loopData[1];
$loopCount = unpack( 'v', $loopData )[1];
if ( $loopCount != 1 ) {
$isLooped = true;
@ -245,8 +240,7 @@ class GIFMetadataExtractor {
if ( strlen( $buf ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$byte = unpack( 'C', $buf );
$byte = $byte[1];
$byte = unpack( 'C', $buf )[1];
throw new Exception( "At position: " . ftell( $fh ) . ", Unknown byte " . $byte );
}
}
@ -283,8 +277,7 @@ class GIFMetadataExtractor {
if ( strlen( $data ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$buf = unpack( 'C', $data );
$buf = $buf[1];
$buf = unpack( 'C', $data )[1];
$bpp = ( $buf & 7 ) + 1;
$buf >>= 7;
@ -303,8 +296,7 @@ class GIFMetadataExtractor {
if ( strlen( $buf ) < 1 ) {
throw new Exception( "Ran out of input" );
}
$block_len = unpack( 'C', $buf );
$block_len = $block_len[1];
$block_len = unpack( 'C', $buf )[1];
if ( $block_len == 0 ) {
return;
}

View file

@ -105,8 +105,7 @@ class PNGMetadataExtractor {
if ( !$buf || strlen( $buf ) < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
$chunk_size = unpack( "N", $buf );
$chunk_size = $chunk_size[1];
$chunk_size = unpack( "N", $buf )[1];
if ( $chunk_size < 0 ) {
throw new Exception( __METHOD__ . ": Chunk size too big for unpack" );

View file

@ -1252,8 +1252,7 @@ class Article implements Page {
if ( $title->getNamespace() == NS_USER
|| $title->getNamespace() == NS_USER_TALK
) {
$parts = explode( '/', $title->getText() );
$rootPart = $parts[0];
$rootPart = explode( '/', $title->getText() )[0];
$user = User::newFromName( $rootPart, false /* allow IP users*/ );
$ip = User::isIP( $rootPart );
$block = Block::newFromTarget( $user, $user );

View file

@ -3948,8 +3948,7 @@ class Parser {
* @return string|bool
*/
public function fetchTemplate( $title ) {
$rv = $this->fetchTemplateAndTitle( $title );
return $rv[0];
return $this->fetchTemplateAndTitle( $title )[0];
}
/**
@ -4052,8 +4051,7 @@ class Parser {
* @return File|bool
*/
public function fetchFile( $title, $options = [] ) {
$res = $this->fetchFileAndTitle( $title, $options );
return $res[0];
return $this->fetchFileAndTitle( $title, $options )[0];
}
/**

View file

@ -136,8 +136,7 @@ class SearchPostgres extends SearchDatabase {
# # TODO: Better output (example to catch: one 'two)
die( "Sorry, that was not a valid search string. Please go back and try again" );
}
$top = $res->fetchRow();
$top = $top[0];
$top = $res->fetchRow()[0];
$this->searchTerms = [];
if ( $top === "" ) { # # e.g. if only stopwords are used XXX return something better

View file

@ -99,9 +99,7 @@ class SkinTemplate extends Skin {
$languageLinks = array();
foreach ( $this->getOutput()->getLanguageLinks() as $languageLinkText ) {
$languageLinkParts = explode( ':', $languageLinkText, 2 );
$class = 'interlanguage-link interwiki-' . $languageLinkParts[0];
unset( $languageLinkParts );
$class = 'interlanguage-link interwiki-' . explode( ':', $languageLinkText, 2 )[0];
$languageLinkTitle = Title::newFromText( $languageLinkText );
if ( $languageLinkTitle ) {

View file

@ -228,18 +228,14 @@ class ConverterRule {
}
// or display current variant in unidirectional array
if ( $disp === false && array_key_exists( $variant, $unidtable ) ) {
$disp = array_values( $unidtable[$variant] );
$disp = $disp[0];
$disp = array_values( $unidtable[$variant] )[0];
}
// or display frist text under disable manual convert
if ( $disp === false && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
if ( count( $bidtable ) > 0 ) {
$disp = array_values( $bidtable );
$disp = $disp[0];
$disp = array_values( $bidtable )[0];
} else {
$disp = array_values( $unidtable );
$disp = array_values( $disp[0] );
$disp = $disp[0];
$disp = array_values( array_values( $unidtable )[0] )[0];
}
}
return $disp;
@ -267,8 +263,7 @@ class ConverterRule {
return $disp;
}
if ( array_key_exists( $variant, $this->mUnidtable ) ) {
$disp = array_values( $this->mUnidtable[$variant] );
$disp = $disp[0];
$disp = array_values( $this->mUnidtable[$variant] )[0];
}
// Assigned above or still false.
return $disp;

View file

@ -4303,8 +4303,7 @@ class Language {
return $this->mParentLanguage;
}
$pieces = explode( '-', $this->getCode() );
$code = $pieces[0];
$code = explode( '-', $this->getCode() )[0];
if ( !in_array( $code, LanguageConverter::$languagesWithVariants ) ) {
$this->mParentLanguage = null;
return null;

View file

@ -992,8 +992,8 @@ class LanguageConverter {
$first = false;
continue;
}
$mappings = explode( '}-', $block, 2 );
$stripped = str_replace( [ "'", '"', '*', '#' ], '', $mappings[0] );
$mappings = explode( '}-', $block, 2 )[0];
$stripped = str_replace( [ "'", '"', '*', '#' ], '', $mappings );
$table = StringUtils::explode( ';', $stripped );
foreach ( $table as $t ) {
$m = explode( '=>', $t, 3 );

View file

@ -20,8 +20,7 @@ class TidyUpBug37714 extends Maintenance {
);
foreach ( $result as $row ) {
$paramLines = explode( "\n", $row->log_params );
$ids = explode( ',', $paramLines[0] ); // Array dereferencing is PHP >= 5.4 :(
$ids = explode( ',', explode( "\n", $row->log_params )[0] );
$result = $this->getDB( DB_SLAVE )->select( // Work out what log entries were changed here.
'logging',
'log_type',

View file

@ -661,8 +661,7 @@ class TestFileIterator implements Iterator {
) );
}
$tokens = array_values( $tokens );
return $tokens[0];
return array_values( $tokens )[0];
}
}