optimized string starts with checks
Doing this with strpos() is slightly faster than substr().
This commit is contained in:
parent
7ee2f6da75
commit
fe62401907
@ -79,7 +79,7 @@ class Configuration implements ConfigurationInterface
|
|||||||
->useAttributeAsKey('key')
|
->useAttributeAsKey('key')
|
||||||
->prototype('array')
|
->prototype('array')
|
||||||
->beforeNormalization()
|
->beforeNormalization()
|
||||||
->ifTrue(function($v){ return is_string($v) && '@' === substr($v, 0, 1); })
|
->ifTrue(function($v){ return is_string($v) && 0 === strpos($v, '@'); })
|
||||||
->then(function($v){ return array('id' => substr($v, 1), 'type' => 'service'); })
|
->then(function($v){ return array('id' => substr($v, 1), 'type' => 'service'); })
|
||||||
->end()
|
->end()
|
||||||
->beforeNormalization()
|
->beforeNormalization()
|
||||||
|
@ -441,7 +441,7 @@ abstract class Client
|
|||||||
protected function getAbsoluteUri($uri)
|
protected function getAbsoluteUri($uri)
|
||||||
{
|
{
|
||||||
// already absolute?
|
// already absolute?
|
||||||
if ('http' === substr($uri, 0, 4)) {
|
if (0 === strpos($uri, 'http')) {
|
||||||
return $uri;
|
return $uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ class ArgvInput extends Input
|
|||||||
{
|
{
|
||||||
$this->parsed = $this->tokens;
|
$this->parsed = $this->tokens;
|
||||||
while (null !== $token = array_shift($this->parsed)) {
|
while (null !== $token = array_shift($this->parsed)) {
|
||||||
if ('--' === substr($token, 0, 2)) {
|
if (0 === strpos($token, '--')) {
|
||||||
$this->parseLongOption($token);
|
$this->parseLongOption($token);
|
||||||
} elseif ('-' === $token[0]) {
|
} elseif ('-' === $token[0]) {
|
||||||
$this->parseShortOption($token);
|
$this->parseShortOption($token);
|
||||||
|
@ -116,7 +116,7 @@ class ArrayInput extends Input
|
|||||||
protected function parse()
|
protected function parse()
|
||||||
{
|
{
|
||||||
foreach ($this->parameters as $key => $value) {
|
foreach ($this->parameters as $key => $value) {
|
||||||
if ('--' === substr($key, 0, 2)) {
|
if (0 === strpos($key, '--')) {
|
||||||
$this->addLongOption(substr($key, 2), $value);
|
$this->addLongOption(substr($key, 2), $value);
|
||||||
} elseif ('-' === $key[0]) {
|
} elseif ('-' === $key[0]) {
|
||||||
$this->addShortOption(substr($key, 1), $value);
|
$this->addShortOption(substr($key, 1), $value);
|
||||||
|
@ -46,7 +46,7 @@ class InputOption
|
|||||||
*/
|
*/
|
||||||
public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null)
|
public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null)
|
||||||
{
|
{
|
||||||
if ('--' === substr($name, 0, 2)) {
|
if (0 === strpos($name, '--')) {
|
||||||
$name = substr($name, 2);
|
$name = substr($name, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ class Link
|
|||||||
$uri = trim($this->getRawUri());
|
$uri = trim($this->getRawUri());
|
||||||
|
|
||||||
// absolute URL?
|
// absolute URL?
|
||||||
if ('http' === substr($uri, 0, 4)) {
|
if (0 === strpos($uri, 'http')) {
|
||||||
return $uri;
|
return $uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ class Response
|
|||||||
$charset = $this->charset ?: 'UTF-8';
|
$charset = $this->charset ?: 'UTF-8';
|
||||||
if (!$this->headers->has('Content-Type')) {
|
if (!$this->headers->has('Content-Type')) {
|
||||||
$this->headers->set('Content-Type', 'text/html; charset='.$charset);
|
$this->headers->set('Content-Type', 'text/html; charset='.$charset);
|
||||||
} elseif ('text/' === substr($this->headers->get('Content-Type'), 0, 5) && false === strpos($this->headers->get('Content-Type'), 'charset')) {
|
} elseif (0 === strpos($this->headers->get('Content-Type'), 'text/') && false === strpos($this->headers->get('Content-Type'), 'charset')) {
|
||||||
// add the charset
|
// add the charset
|
||||||
$this->headers->set('Content-Type', $this->headers->get('Content-Type').'; charset='.$charset);
|
$this->headers->set('Content-Type', $this->headers->get('Content-Type').'; charset='.$charset);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ class ServerBag extends ParameterBag
|
|||||||
{
|
{
|
||||||
$headers = array();
|
$headers = array();
|
||||||
foreach ($this->parameters as $key => $value) {
|
foreach ($this->parameters as $key => $value) {
|
||||||
if ('HTTP_' === substr($key, 0, 5)) {
|
if (0 === strpos($key, 'HTTP_')) {
|
||||||
$headers[substr($key, 5)] = $value;
|
$headers[substr($key, 5)] = $value;
|
||||||
}
|
}
|
||||||
// CONTENT_* are not prefixed with HTTP_
|
// CONTENT_* are not prefixed with HTTP_
|
||||||
|
@ -597,7 +597,7 @@ abstract class Kernel implements KernelInterface
|
|||||||
{
|
{
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
foreach ($_SERVER as $key => $value) {
|
foreach ($_SERVER as $key => $value) {
|
||||||
if ('SYMFONY__' === substr($key, 0, 9)) {
|
if (0 === strpos($key, 'SYMFONY__')) {
|
||||||
$parameters[strtolower(str_replace('__', '.', substr($key, 9)))] = $value;
|
$parameters[strtolower(str_replace('__', '.', substr($key, 9)))] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ class MysqlProfilerStorage extends PdoProfilerStorage
|
|||||||
protected function initDb()
|
protected function initDb()
|
||||||
{
|
{
|
||||||
if (null === $this->db) {
|
if (null === $this->db) {
|
||||||
if ('mysql' !== substr($this->dsn, 0, 5)) {
|
if (0 !== strpos($this->dsn, 'mysql')) {
|
||||||
throw new \RuntimeException('Please check your configuration. You are trying to use Mysql with a wrong dsn. "'.$this->dsn.'"');
|
throw new \RuntimeException('Please check your configuration. You are trying to use Mysql with a wrong dsn. "'.$this->dsn.'"');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class SqliteProfilerStorage extends PdoProfilerStorage
|
|||||||
protected function initDb()
|
protected function initDb()
|
||||||
{
|
{
|
||||||
if (null === $this->db || $this->db instanceof \SQLite3) {
|
if (null === $this->db || $this->db instanceof \SQLite3) {
|
||||||
if ('sqlite' !== substr($this->dsn, 0, 6 )) {
|
if (0 !== strpos($this->dsn, 'sqlite')) {
|
||||||
throw new \RuntimeException('You are trying to use Sqlite with a wrong dsn. "'.$this->dsn.'"');
|
throw new \RuntimeException('You are trying to use Sqlite with a wrong dsn. "'.$this->dsn.'"');
|
||||||
}
|
}
|
||||||
if (class_exists('SQLite3')) {
|
if (class_exists('SQLite3')) {
|
||||||
|
@ -431,7 +431,7 @@ class StubIntlDateFormatter
|
|||||||
$timeZone = $timeZoneId;
|
$timeZone = $timeZoneId;
|
||||||
|
|
||||||
// Get an Etc/GMT time zone that is accepted for \DateTimeZone
|
// Get an Etc/GMT time zone that is accepted for \DateTimeZone
|
||||||
if ('GMT' !== $timeZoneId && 'GMT' === substr($timeZoneId, 0, 3)) {
|
if ('GMT' !== $timeZoneId && 0 === strpos($timeZoneId, 'GMT')) {
|
||||||
try {
|
try {
|
||||||
$timeZoneId = DateFormat\TimeZoneTransformer::getEtcTimeZoneId($timeZoneId);
|
$timeZoneId = DateFormat\TimeZoneTransformer::getEtcTimeZoneId($timeZoneId);
|
||||||
} catch (\InvalidArgumentException $e) {
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
@ -114,7 +114,7 @@ class Parser
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ('<<' === $key) {
|
if ('<<' === $key) {
|
||||||
if (isset($values['value']) && '*' === substr($values['value'], 0, 1)) {
|
if (isset($values['value']) && 0 === strpos($values['value'], '*')) {
|
||||||
$isInPlace = substr($values['value'], 1);
|
$isInPlace = substr($values['value'], 1);
|
||||||
if (!array_key_exists($isInPlace, $this->refs)) {
|
if (!array_key_exists($isInPlace, $this->refs)) {
|
||||||
throw new ParseException(sprintf('Reference "%s" does not exist.', $isInPlace), $this->getRealCurrentLineNb() + 1, $this->currentLine);
|
throw new ParseException(sprintf('Reference "%s" does not exist.', $isInPlace), $this->getRealCurrentLineNb() + 1, $this->currentLine);
|
||||||
@ -188,7 +188,7 @@ class Parser
|
|||||||
|
|
||||||
if (is_array($value)) {
|
if (is_array($value)) {
|
||||||
$first = reset($value);
|
$first = reset($value);
|
||||||
if (is_string($first) && '*' === substr($first, 0, 1)) {
|
if (is_string($first) && 0 === strpos($first, '*')) {
|
||||||
$data = array();
|
$data = array();
|
||||||
foreach ($value as $alias) {
|
foreach ($value as $alias) {
|
||||||
$data[] = $this->refs[substr($alias, 1)];
|
$data[] = $this->refs[substr($alias, 1)];
|
||||||
@ -347,7 +347,7 @@ class Parser
|
|||||||
*/
|
*/
|
||||||
private function parseValue($value)
|
private function parseValue($value)
|
||||||
{
|
{
|
||||||
if ('*' === substr($value, 0, 1)) {
|
if (0 === strpos($value, '*')) {
|
||||||
if (false !== $pos = strpos($value, '#')) {
|
if (false !== $pos = strpos($value, '#')) {
|
||||||
$value = substr($value, 1, $pos - 2);
|
$value = substr($value, 1, $pos - 2);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user