本文整理汇总了PHP中Str::increment方法的典型用法代码示例。如果您正苦于以下问题:PHP Str::increment方法的具体用法?PHP Str::increment怎么用?PHP Str::increment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Str
的用法示例。
在下文中一共展示了Str::increment方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_increment
/**
* Test for Str::increment()
*
* @test
*/
public function test_increment()
{
$values = array('valueA', 'valueB', 'valueC');
for ($i = 0; $i < count($values); $i++) {
$output = Str::increment($values[$i], $i);
$expected = $values[$i] . '_' . $i;
$this->assertEquals($expected, $output);
}
}
示例2: migration
public static function migration($args, $build = true)
{
// Get the migration name
$migration_name = strtolower(str_replace('-', '_', array_shift($args)));
// Check if a migration with this name already exists
if (count($duplicates = glob(APPPATH . "migrations/*_{$migration_name}*")) > 0) {
// Don't override a file
if (\Cli::option('s', \Cli::option('skip')) === true) {
return;
}
// Tear up the file path and name to get the last duplicate
$file_name = pathinfo(end($duplicates), PATHINFO_FILENAME);
// Override the (most recent) migration with the same name by using its number
if (\Cli::option('f', \Cli::option('force')) === true) {
list($number) = explode('_', $file_name);
} elseif (static::$scaffolding === false) {
// Increment the name of this
$migration_name = \Str::increment(substr($file_name, 4), 2);
}
}
// See if the action exists
$methods = get_class_methods(__NAMESPACE__ . '\\Generate_Migration_Actions');
// For empty migrations that dont have actions
$migration = array('', '');
// Loop through the actions and act on a matching action appropriately
foreach ($methods as $method_name) {
// If the miration name starts with the name of the action method
if (substr($migration_name, 0, strlen($method_name)) === $method_name) {
/**
* Create an array of the subject the migration is about
*
* - In a migration named 'create_users' the subject is 'users' since thats what we want to create
* So it would be the second object in the array
* array(false, 'users')
*
* - In a migration named 'add_name_to_users' the object is 'name' and the subject is 'users'.
* So again 'users' would be the second object, but 'name' would be the first
* array('name', 'users')
*
*/
$subjects = array(false, false);
$matches = explode('_', str_replace($method_name . '_', '', $migration_name));
// create_{table}
if (count($matches) == 1) {
$subjects = array(false, $matches[0]);
} else {
if (count($matches) == 3 && $matches[1] == 'to') {
$subjects = array($matches[0], $matches[2]);
} else {
if (count($matches) !== 0) {
$subjects = array(false, implode('_', $matches));
} else {
break;
}
}
}
// We always pass in fields to a migration, so lets sort them out here.
$fields = array();
foreach ($args as $field) {
$field_array = array();
// Each paramater for a field is seperated by the : character
$parts = explode(":", $field);
// We must have the 'name:type' if nothing else!
if (count($parts) >= 2) {
$field_array['name'] = array_shift($parts);
foreach ($parts as $part_i => $part) {
preg_match('/([a-z0-9_-]+)(?:\\[([a-z0-9]+)\\])?/i', $part, $part_matches);
array_shift($part_matches);
if (count($part_matches) < 1) {
// Move onto the next part, something is wrong here...
continue;
}
$option_name = '';
// This is the name of the option to be passed to the action in a field
$option = $part_matches;
// The first option always has to be the field type
if ($part_i == 0) {
$option_name = 'type';
$type = $option[0];
if ($type === 'string') {
$type = 'varchar';
} else {
if ($type === 'integer') {
$type = 'int';
}
}
if (!in_array($type, array('text', 'blob', 'datetime', 'date', 'timestamp', 'time'))) {
if (!isset($option[1]) || $option[1] == NULL) {
if (isset(self::$_default_constraints[$type])) {
$field_array['constraint'] = self::$_default_constraints[$type];
}
} else {
$field_array['constraint'] = (int) $option[1];
}
}
$option = $type;
} else {
// This allows you to put any number of :option or :option[val] into your field and these will...
// ... always be passed through to the action making it really easy to add extra options for a field
$option_name = array_shift($option);
//.........这里部分代码省略.........
示例3: action_edit
/**
* Edit product hotspot infotab
* This infotab has realy custom form and needs to be separated of others
*
* @param $content_id = Content ID
*
*/
public function action_edit($content_id = false)
{
// Check for product
if (!is_numeric($content_id)) {
\Response::redirect('admin/application/list');
}
// Get news item to edit
if (!($content = Model_Application::find_one_by_id($content_id))) {
\Response::redirect('admin/application/list');
}
if (\Input::post()) {
if (\Input::post('image', false)) {
// Upload image and display errors if there are any
$image = $this->upload_infotab_image();
if (!$image['exists'] && \Config::get('infotab.image.required', false) && empty($content->hotspot_image)) {
// No previous images and image is not selected and it is required
\Messages::error('<strong>There was an error while trying to upload image</strong>');
\Messages::error('You have to select image');
} elseif ($image['errors']) {
\Messages::error('<strong>There was an error while trying to upload image</strong>');
foreach ($image['errors'] as $error) {
\Messages::error($error);
}
}
if ($image['is_valid'] && !(!$image['exists'] && \Config::get('infotab.image.required', false) && empty($content->hotspot_image)) || \Input::post('use_cover_image', false)) {
// Clear previous messages if exists
\Messages::reset();
// Get POST values
$insert = \Input::post();
$item_image['hotspot_alt_text'] = \Input::post('alt_text', false) ? \Input::post('alt_text', false) : NULL;
// Use cover image
if (\Input::post('use_cover_image', false)) {
$cover_image = \Input::post('cover_image');
$old_image = \Config::get('details.image.location.root') . $cover_image;
$new_image = \Config::get('infotab.image.location.root') . $cover_image;
// var_dump($old_image, $new_image); exit;
while (file_exists($new_image)) {
$file_name = pathinfo($new_image, PATHINFO_FILENAME);
$file_ext = pathinfo($new_image, PATHINFO_EXTENSION);
$file_name = \Str::increment($file_name);
$new_image = \Config::get('infotab.image.location.root') . $file_name . '.' . $file_ext;
}
if (\File::copy($old_image, $new_image)) {
$image = \Image::forge(array('presets' => \Config::get('infotab.image.resize', array())));
$image->load($new_image);
foreach (\Config::get('infotab.image.resize', array()) as $preset => $options) {
$image->preset($preset);
}
if (isset($item_image)) {
$insert['hotspot_alt_text'] = isset($item_image['hotspot_alt_text']) ? $item_image['hotspot_alt_text'] : NULL;
$insert['hotspot_image'] = basename($new_image);
// Delete old infotab image
if (\Input::post('image_db', false)) {
$this->delete_infotab_image(\Input::post('image_db', ''));
}
}
} else {
\Messages::error('<strong>There was an error while trying to upload image</strong>');
\Messages::error('Please try again');
}
// Delete uploaded images if there is product saving error
if (isset($this->_infotab_image_data)) {
foreach ($this->_infotab_image_data as $image_data) {
$this->delete_infotab_image($image_data['saved_as']);
}
}
} else {
/** IMAGES **/
// Save images if new files are submitted
if (isset($this->_infotab_image_data)) {
foreach ($this->_infotab_image_data as $image_data) {
$item_image['hotspot_image'] = $image_data['saved_as'];
// Delete old infotab image
if (\Input::post('image_db', false)) {
$this->delete_infotab_image(\Input::post('image_db', ''));
}
}
}
if (isset($item_image)) {
$insert['hotspot_alt_text'] = isset($item_image['hotspot_alt_text']) ? $item_image['hotspot_alt_text'] : NULL;
$insert['hotspot_image'] = isset($item_image['hotspot_image']) ? $item_image['hotspot_image'] : $content->hotspot_image;
}
/** END OF IMAGES **/
}
// Make infotab active
$insert['active'] = 1;
$content->set($insert);
try {
$content->save();
\Messages::success('Image successfully updated.');
\Response::redirect(\Uri::create('admin/application/hotspot/show/' . $content->id));
} catch (\Database_Exception $e) {
// show validation errors
//.........这里部分代码省略.........
示例4: migration
public static function migration($args, $build = true)
{
// Get the migration name
$migration_name = \Str::lower(str_replace(array('-', '/'), '_', array_shift($args)));
if (empty($migration_name) or strpos($migration_name, ':')) {
throw new Exception("Command is invalid." . PHP_EOL . "\tphp oil g migration <migrationname> [<fieldname1>:<type1> |<fieldname2>:<type2> |..]");
}
$base_path = APPPATH;
// Check if a migration with this name already exists
if ($module = \Cli::option('module')) {
if (!($base_path = \Module::exists($module))) {
throw new Exception('Module ' . $module . ' was not found within any of the defined module paths');
}
}
$migrations = new \GlobIterator($base_path . 'migrations/*_' . $migration_name . '*');
try {
$duplicates = array();
foreach ($migrations as $migration) {
// check if it's really a duplicate
$part = explode('_', basename($migration->getFilename(), '.php'), 2);
if ($part[1] != $migration_name) {
$part = substr($part[1], strlen($migration_name) + 1);
if (!is_numeric($part)) {
// not a numbered suffix, but the same base classname
continue;
}
}
$duplicates[] = $migration->getPathname();
}
} catch (\LogicException $e) {
throw new Exception("Unable to read existing migrations. Path does not exist, or you may have an 'open_basedir' defined");
}
if (count($duplicates) > 0) {
// Don't override a file
if (\Cli::option('s', \Cli::option('skip')) === true) {
return;
}
// Tear up the file path and name to get the last duplicate
$file_name = pathinfo(end($duplicates), PATHINFO_FILENAME);
// Override the (most recent) migration with the same name by using its number
if (\Cli::option('f', \Cli::option('force')) === true) {
list($number) = explode('_', $file_name);
} elseif (static::$scaffolding === false) {
// Increment the name of this
$migration_name = \Str::increment(substr($file_name, 4), 2);
}
}
// See if the action exists
$methods = get_class_methods(__NAMESPACE__ . '\\Generate_Migration_Actions');
// For empty migrations that dont have actions
$migration = array('', '');
// Loop through the actions and act on a matching action appropriately
foreach ($methods as $method_name) {
// If the miration name starts with the name of the action method
if (substr($migration_name, 0, strlen($method_name)) === $method_name) {
/**
* Create an array of the subject the migration is about
*
* - In a migration named 'create_users' the subject is 'users' since thats what we want to create
* So it would be the second object in the array
* array(false, 'users')
*
* - In a migration named 'add_name_to_users' the object is 'name' and the subject is 'users'.
* So again 'users' would be the second object, but 'name' would be the first
* array('name', 'users')
*
*/
$subjects = array(false, false);
$matches = explode('_', str_replace($method_name . '_', '', $migration_name));
// create_{table}
if (count($matches) == 1) {
$subjects = array(false, $matches[0]);
} else {
if (count($matches) == 3 && $matches[1] == 'to') {
$subjects = array($matches[0], $matches[2]);
} else {
if (count($matches) == 3 && $matches[1] == 'from') {
$subjects = array($matches[0], $matches[2]);
} else {
if (count($matches) >= 5 && in_array('to', $matches) && in_array('in', $matches)) {
$subjects = array(implode('_', array_slice($matches, array_search('in', $matches) + 1)), implode('_', array_slice($matches, 0, array_search('to', $matches))), implode('_', array_slice($matches, array_search('to', $matches) + 1, array_search('in', $matches) - array_search('to', $matches) - 1)));
} else {
if ($method_name == 'rename_table') {
$subjects = array(implode('_', array_slice($matches, 0, array_search('to', $matches))), implode('_', array_slice($matches, array_search('to', $matches) + 1)));
} else {
if (count($matches) !== 0) {
$name = str_replace(array('create_', 'add_', 'drop_', '_to_'), array('create-', 'add-', 'drop-', '-to-'), $migration_name);
if (preg_match('/^(create|drop|add)\\-([a-z0-9\\_]*)(\\-to\\-)?([a-z0-9\\_]*)?$/i', $name, $deep_matches)) {
switch ($deep_matches[1]) {
case 'create':
case 'drop':
$subjects = array(false, $deep_matches[2]);
break;
case 'add':
$subjects = array($deep_matches[2], $deep_matches[4]);
break;
}
}
} else {
break;
//.........这里部分代码省略.........
示例5: action_create
public function action_create()
{
\View::set_global('title', 'Add New');
if (\Input::post()) {
$val = Model_Team::validate('create');
// Upload image and display errors if there are any
$image = $this->upload_image();
if (!$image['exists'] && \Config::get('details.image.required', false) && empty($item->image)) {
// No previous images and image is not selected and it is required
\Messages::error('<strong>There was an error while trying to upload member image</strong>');
\Messages::error('You have to select image');
} elseif ($image['errors']) {
\Messages::error('<strong>There was an error while trying to upload member image</strong>');
foreach ($image['errors'] as $error) {
\Messages::error($error);
}
}
if ($val->run() && $image['is_valid'] && !(!$image['exists'] && \Config::get('details.image.required', false))) {
// Get POST values
$insert = \Input::post();
// Prepare some values
$insert['published_at'] = !empty($insert['published_at']) ? strtotime($insert['published_at']) : \Date::forge()->get_timestamp();
$insert['active_from'] = !empty($insert['active_from']) ? strtotime($insert['active_from']) : NULL;
$insert['active_to'] = !empty($insert['active_to']) ? strtotime($insert['active_to']) : NULL;
if ($insert['status'] != 2) {
unset($insert['active_from']);
unset($insert['active_to']);
}
$item = Model_Team::forge($insert);
try {
$item->save();
// Validate and insert team slug into SEO database table
$val_seo = Model_Seo::validate('create_seo');
$insert_seo = array('content_id' => $item->id, 'slug' => \Inflector::friendly_title($item->name, '-', true));
while (!$val_seo->run($insert_seo)) {
$insert_seo['slug'] = \Str::increment($insert_seo['slug'], 1, '-');
}
$item_seo = Model_Seo::forge($insert_seo);
$item_seo->save();
// END OF: SEO
// Insert team images
if ($this->_image_data) {
$item_image = array(array('id' => 0, 'data' => array('content_id' => $item->id, 'image' => $this->_image_data[0]['saved_as'], 'alt_text' => \Input::post('alt_text', ''), 'cover' => 1, 'sort' => 1)));
Model_Team::bind_images($item_image);
}
\Messages::success('Member successfully created.');
\Response::redirect(\Input::post('update', false) ? \Uri::create('admin/team/update/' . $item->id) : \Uri::admin('current'));
} catch (\Database_Exception $e) {
// show validation errors
\Messages::error('<strong>There was an error while trying to create member</strong>');
// Uncomment lines below to show database errors
$errors = $e->getMessage();
\Messages::error($errors);
}
} else {
if ($val->error() != array()) {
// show validation errors
\Messages::error('<strong>There was an error while trying to create member</strong>');
foreach ($val->error() as $e) {
\Messages::error($e->get_message());
}
}
}
// Delete uploaded image if there is team saving error
if (isset($this->_image_data)) {
$this->delete_image($this->_image_data[0]['saved_as']);
}
}
\Theme::instance()->set_partial('content', $this->view_dir . 'create');
}
示例6: generateMigration
/**
* Writes a migration class to the filesystem
*
* @param string $up PHP code to migrate up
* @param string $down PHP code to migrate down
* @param string $name The name of the migration, usually involving a timestamp
* @return void
*/
protected static function generateMigration($up = '', $down = '', $name = null)
{
// Get the migration name
empty($name) and $name = 'Migration' . date('YmdHis');
// Check if a migration with this name already exists
if (($duplicates = glob(APPPATH . "migrations/*_{$name}*")) === false) {
throw new \Exception("Unable to read existing migrations. Do you have an 'open_basedir' defined?");
}
if (count($duplicates) > 0) {
// Don't override a file
if (\Fuel::$is_cli && \Cli::option('s', \Cli::option('skip')) === true) {
return;
}
// Tear up the file path and name to get the last duplicate
$file_name = pathinfo(end($duplicates), PATHINFO_FILENAME);
// Override the (most recent) migration with the same name by using its number
if (\Fuel::$is_cli && \Cli::option('f', \Cli::option('force')) === true) {
list($number) = explode('_', $file_name);
} else {
// Increment the name of this
$name = \Str::increment(substr($file_name, 4), 2);
}
}
$name = ucfirst(strtolower($name));
$migration = <<<MIGRATION
<?php
namespace Fuel\\Migrations;
class {$name}
{
\tpublic function up()
\t{
{$up}
\t}
\tpublic function down()
\t{
{$down}
\t}
}
MIGRATION;
$number = isset($number) ? $number : static::findMigrationNumber();
$filepath = APPPATH . 'migrations/' . $number . '_' . strtolower($name) . '.php';
Generate::create($filepath, $migration, 'migration');
Generate::build();
}