]> git.andy128k.dev Git - ipf.git/commitdiff
optimize isValidName
authorAndrey Kutejko <andy128k@gmail.com>
Sat, 15 Jun 2013 14:09:19 +0000 (17:09 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Sat, 15 Jun 2013 14:09:19 +0000 (17:09 +0300)
ipf/utils.php
t/UtilsTest.php

index 30649a6fbee95671aa8dade16489b9128e12a2aa..9c0c7bb3fa22ebf662615b172537ad5d7635a9f5 100644 (file)
@@ -4,15 +4,7 @@ class IPF_Utils
 {
     public static function isValidName($s, $max_length=50)
     {
-        if (!is_string($s))
-            return false;
-        if ( (strlen($s)==0) || (strlen($s)>$max_length) )
-            return false;
-        if ( is_numeric($s[0]))
-            return false;
-        if (!preg_match('/^[a-zA-Z0-9_]+$/', $s ))
-            return false;
-        return true;
+        return is_string($s) && preg_match('/^[a-zA-Z_][a-zA-Z0-9_]{0,'.($max_length-1).'}$/', $s) === 1;
     }
 
     public static function isEmail($value)
index a91c4ff5a55e7b0f63559226ccb287280110c6b5..ca2422ad2b7ce551c6100beaf710b2cd6f4f1e3d 100644 (file)
@@ -7,5 +7,21 @@ class Utils_Test extends PHPUnit_Framework_TestCase
         $this->assertEquals('goods/thumbs/image.gif', IPF_Utils::insertDirectory('goods/image.gif', 'thumbs'));
         $this->assertEquals('thumbs/image.gif', IPF_Utils::insertDirectory('image.gif', 'thumbs'));
     }
+
+    public function testIsValidName()
+    {
+        $this->assertFalse(IPF_Utils::isValidName(3));
+        $this->assertFalse(IPF_Utils::isValidName(array()));
+        $this->assertFalse(IPF_Utils::isValidName((object)array()));
+        $this->assertFalse(IPF_Utils::isValidName(''));
+        $this->assertFalse(IPF_Utils::isValidName('abc', 2));
+        $this->assertFalse(IPF_Utils::isValidName('4ever'));
+        $this->assertFalse(IPF_Utils::isValidName('+'));
+        $this->assertFalse(IPF_Utils::isValidName('-'));
+        $this->assertFalse(IPF_Utils::isValidName('not a valid name'));
+        $this->assertTrue(IPF_Utils::isValidName('AbstractFactoryBean'));
+        $this->assertTrue(IPF_Utils::isValidName('th1s_1s_a_valid_nam3'));
+        $this->assertTrue(IPF_Utils::isValidName('_'));
+    }
 }