underscoreToCamelcase() публичный статический Метод

Method to convert the string from under_score to camelCase format
public static underscoreToCamelcase ( string $string ) : string
$string string
Результат string
Пример #1
0
 /**
  * Install the model class files
  *
  * @param \Pop\Config $install
  * @return void
  */
 public static function install($install)
 {
     echo \Pop\I18n\I18n::factory()->__('Creating model class files...') . PHP_EOL;
     // Create model class folder
     $modelDir = $install->project->base . '/module/' . $install->project->name . '/src/' . $install->project->name . '/Model';
     if (!file_exists($modelDir)) {
         mkdir($modelDir);
     }
     $models = $install->models->asArray();
     foreach ($models as $model) {
         $modelName = ucfirst(\Pop\Filter\String::underscoreToCamelcase($model));
         // Define namespace
         $ns = new NamespaceGenerator($install->project->name . '\\Model');
         // Create and save model class file
         $modelCls = new Generator($modelDir . '/' . $modelName . '.php', Generator::CREATE_CLASS);
         $modelCls->setNamespace($ns);
         $modelCls->save();
     }
 }
Пример #2
0
 /**
  * Install the table class files
  *
  * @param \Pop\Config $install
  * @param array  $dbTables
  * @return void
  */
 public static function install($install, $dbTables)
 {
     echo \Pop\I18n\I18n::factory()->__('Creating database table class files...') . PHP_EOL;
     // Create table class folder
     $tableDir = $install->project->base . '/module/' . $install->project->name . '/src/' . $install->project->name . '/Table';
     if (!file_exists($tableDir)) {
         mkdir($tableDir);
     }
     // Loop through the tables, creating the classes
     foreach ($dbTables as $table => $value) {
         $prefix = isset($value['prefix']) ? $value['prefix'] : null;
         $tableName = ucfirst(\Pop\Filter\String::underscoreToCamelcase(str_replace($prefix, '', $table)));
         $ns = new NamespaceGenerator($install->project->name . '\\Table');
         $ns->setUse('Pop\\Db\\Record');
         if (strpos($value['primaryId'], '|') !== false) {
             $pIdType = 'array';
             $pId = explode('|', $value['primaryId']);
         } else {
             $pIdType = 'string';
             $pId = $value['primaryId'];
         }
         if (null !== $prefix) {
             $prefix = new PropertyGenerator('prefix', 'string', $prefix, 'protected');
         }
         $propId = new PropertyGenerator('primaryId', $pIdType, $pId, 'protected');
         $propAuto = new PropertyGenerator('auto', 'boolean', $value['auto'], 'protected');
         // Create and save table class file
         $tableCls = new Generator($tableDir . '/' . $tableName . '.php', Generator::CREATE_CLASS);
         $tableCls->setNamespace($ns);
         $tableCls->code()->setParent('Record')->addProperty($propId)->addProperty($propAuto);
         if (null !== $prefix) {
             $tableCls->code()->addProperty($prefix);
         }
         $tableCls->save();
     }
 }
Пример #3
0
 public function testUnderscoreToCamelCase()
 {
     $this->assertEquals('helloWorld', String::underscoreToCamelcase('hello_world'));
 }
Пример #4
0
 /**
  * Create the bootstrap file
  *
  * @param \Pop\Config $install
  * @return void
  */
 public static function install($install)
 {
     // Define full paths of the autoloader and config files
     $autoload = realpath(__DIR__ . '/../../Loader/Autoloader.php');
     $moduleSrc = realpath($install->project->base . '/module/' . $install->project->name . '/src');
     $projectCfg = realpath($install->project->base . '/config/project.php');
     $moduleCfg = realpath($install->project->base . '/module/' . $install->project->name . '/config/module.php');
     // Figure out the relative base and docroot
     $base = str_replace("\\", '/', realpath($install->project->base));
     $docroot = str_replace("\\", '/', realpath($install->project->docroot));
     $base = substr($base, -1) == '/' ? substr($base, 0, -1) : $base;
     $docroot = substr($docroot, -1) == '/' ? substr($docroot, 0, -1) : $docroot;
     // If the base and docroot are the same
     if (strlen($base) == strlen($docroot)) {
         $autoload = "__DIR__ . '/vendor/PopPHPFramework/src/Pop/Loader/Autoloader.php'";
         $moduleSrc = "__DIR__ . '/module/" . $install->project->name . "/src'";
         $projectCfg = "__DIR__ . '/config/project.php'";
         $moduleCfg = "__DIR__ . '/module/" . $install->project->name . "/config/module.php'";
         // If the docroot is under the base
     } else {
         if (strlen($base) < strlen($docroot)) {
             // Calculate how many levels up the base is from the docroot
             $diff = str_replace($base, '', $docroot);
             $levels = substr_count($diff, '/');
             $dirs = '/';
             for ($i = 0; $i < $levels; $i++) {
                 $dirs .= '../';
             }
             $autoload = "__DIR__ . '" . $dirs . "vendor/PopPHPFramework/src/Pop/Loader/Autoloader.php'";
             $moduleSrc = "__DIR__ . '" . $dirs . "module/" . $install->project->name . "/src'";
             $projectCfg = "__DIR__ . '" . $dirs . "config/project.php'";
             $moduleCfg = "__DIR__ . '" . $dirs . "module/" . $install->project->name . "/config/module.php'";
             // If the base is under the docroot
         } else {
             if (strlen($base) > strlen($docroot)) {
                 $dir = str_replace($docroot, '', $base);
                 $autoload = "__DIR__ . '" . $dir . "/vendor/PopPHPFramework/src/Pop/Loader/Autoloader.php'";
                 $moduleSrc = "__DIR__ . '" . $dir . "/module/" . $install->project->name . "/src'";
                 $projectCfg = "__DIR__ . '" . $dir . "/config/project.php'";
                 $moduleCfg = "__DIR__ . '" . $dir . "/module/" . $install->project->name . "/config/module.php'";
             }
         }
     }
     // Create new Code file object
     $bootstrap = new \Pop\Code\Generator($install->project->docroot . '/bootstrap.php');
     // Create new bootstrap file
     if (!file_exists($install->project->docroot . '/bootstrap.php')) {
         $bootstrap->appendToBody("// Require the Autoloader class file" . PHP_EOL . "require_once {$autoload};" . PHP_EOL)->appendToBody("// Instantiate the autoloader object" . PHP_EOL . "\$autoloader = Pop\\Loader\\Autoloader::factory();" . PHP_EOL . "\$autoloader->splAutoloadRegister();");
     }
     // Else, just append to the existing bootstrap file
     $bootstrap->appendToBody("\$autoloader->register('{$install->project->name}', {$moduleSrc});" . PHP_EOL)->appendToBody("// Create a project object")->appendToBody("\$project = {$install->project->name}\\Project::factory(")->appendToBody("    include {$projectCfg},")->appendToBody("    include {$moduleCfg},");
     // Set up any controllers via a router object
     if (isset($install->controllers)) {
         $controllers = $install->controllers->asArray();
         $ctrls = array();
         foreach ($controllers as $key => $value) {
             $subs = array();
             foreach ($value as $k => $v) {
                 if (is_array($v)) {
                     $subs[] = $k;
                 }
             }
             if (count($subs) > 0) {
                 $ctls = "'{$key}' => array(" . PHP_EOL;
                 if (array_key_exists('index', $value)) {
                     $ctls .= "            '/' => '{$install->project->name}\\Controller\\" . ucfirst(String::underscoreToCamelcase(substr($key, 1))) . "\\IndexController'," . PHP_EOL;
                 }
                 foreach ($subs as $sub) {
                     $ctls .= "            '{$sub}' => '{$install->project->name}\\Controller\\" . ucfirst(String::underscoreToCamelcase(substr($key, 1))) . "\\" . ucfirst(String::underscoreToCamelcase(substr($sub, 1))) . "Controller'," . PHP_EOL;
                 }
                 $ctls .= '        )';
                 $ctrls[] = $ctls;
             } else {
                 if ($key == '/') {
                     $ctrls[] = "'{$key}' => '{$install->project->name}\\Controller\\IndexController'";
                 } else {
                     $controllerName = substr($key, 1);
                     if (array_key_exists('index', $value)) {
                         $ctrls[] = "'{$key}' => '{$install->project->name}\\Controller\\" . ucfirst(String::underscoreToCamelcase($controllerName)) . "\\IndexController'";
                     } else {
                         $ctrls[] = "'{$key}' => '{$install->project->name}\\Controller\\" . ucfirst(String::underscoreToCamelcase($controllerName)) . "Controller'";
                     }
                 }
             }
         }
         $bootstrap->appendToBody("    new Pop\\Mvc\\Router(array(");
         $i = 1;
         foreach ($ctrls as $c) {
             $end = $i < count($ctrls) ? ',' : null;
             $bootstrap->appendToBody("        " . $c . $end);
             $i++;
         }
         $bootstrap->appendToBody("    ))");
     }
     // Finalize and save the bootstrap file
     $bootstrap->appendToBody(");")->save();
 }
Пример #5
0
 /**
  * Install the form class files
  *
  * @param \Pop\Config $install
  * @return void
  */
 public static function install($install)
 {
     echo \Pop\I18n\I18n::factory()->__('Creating form class files...') . PHP_EOL;
     // Create form class folder
     $formDir = $install->project->base . '/module/' . $install->project->name . '/src/' . $install->project->name . '/Form';
     if (!file_exists($formDir)) {
         mkdir($formDir);
     }
     $forms = $install->forms->asArray();
     foreach ($forms as $name => $form) {
         $formName = ucfirst(\Pop\Filter\String::underscoreToCamelcase($name));
         // Define namespace
         $ns = new NamespaceGenerator($install->project->name . '\\Form');
         $ns->setUse('Pop\\Form\\Form')->setUse('Pop\\Form\\Element')->setUse('Pop\\Validator');
         // Create the constructor
         $construct = new MethodGenerator('__construct');
         $construct->setDesc('Constructor method to instantiate the form object');
         $construct->getDocblock()->setReturn('self');
         $construct->addArguments(array(array('name' => 'action', 'value' => 'null', 'type' => 'string'), array('name' => 'method', 'value' => "'post'", 'type' => 'string'), array('name' => 'fields', 'value' => 'null', 'type' => 'array'), array('name' => 'indent', 'value' => 'null', 'type' => 'string')));
         // Create the init values array within the constructor
         if (is_array($form) && count($form) > 0) {
             $construct->appendToBody("\$this->initFieldsValues = array (");
             $i = 0;
             foreach ($form as $name => $field) {
                 $i++;
                 $construct->appendToBody("    '" . $name . "' => array (");
                 $j = 0;
                 foreach ($field as $key => $value) {
                     $j++;
                     $comma = $j < count($field) ? ',' : null;
                     if ($key == 'validators') {
                         $val = null;
                         if (is_array($value)) {
                             $val = 'array(' . PHP_EOL;
                             foreach ($value as $v) {
                                 $val .= '            new Validator\\' . $v . ',' . PHP_EOL;
                             }
                             $val .= '        )';
                         } else {
                             $val = 'new Validator\\' . $value;
                         }
                         $construct->appendToBody("        '{$key}' => {$val}{$comma}");
                     } else {
                         if ($key == 'value' || $key == 'marked' || $key == 'attributes' || $key == 'error') {
                             $val = var_export($value, true);
                             $val = str_replace(PHP_EOL, PHP_EOL . '        ', $val);
                             if (strpos($val, 'Select::') !== false) {
                                 $val = 'Element\\' . str_replace("'", '', $val);
                             }
                             $construct->appendToBody("        '{$key}' => {$val}{$comma}");
                         } else {
                             if (is_bool($value)) {
                                 $val = $value ? 'true' : 'false';
                             } else {
                                 $val = "'" . $value . "'";
                             }
                             $construct->appendToBody("        '{$key}' => {$val}{$comma}");
                         }
                     }
                 }
                 $end = $i < count($form) ? '    ),' : '    )';
                 $construct->appendToBody($end);
             }
             $construct->appendToBody(");");
         }
         $construct->appendToBody("parent::__construct(\$action, \$method, \$fields, \$indent);");
         // Create and save form class file
         $formCls = new Generator($formDir . '/' . $formName . '.php', Generator::CREATE_CLASS);
         $formCls->setNamespace($ns);
         $formCls->code()->setParent('Form')->addMethod($construct);
         $formCls->save();
     }
 }