php yii-helpers-StringHelper类(方法)实例源码

下面列出了php yii-helpers-StringHelper 类(方法)源码代码实例,从而了解它的用法。

作者:omidoni    项目:yii2-sortable-behavio   
public static function bOrderAttr()
 {
     if (is_null(static::$b_order_attr)) {
         static::$b_order_attr = Inflector::camel2id(StringHelper::basename(static::bClass()), '_') . '_ord';
     }
     return static::$b_order_attr;
 }

作者:sadovoja    项目:yii2-image-cutte   
public function upload($attribute)
 {
     $class = \yii\helpers\StringHelper::basename(get_class($this->owner)) . 'Cutter';
     if ($uploadImage = UploadedFile::getInstance($this->owner, $attribute)) {
         if (!$this->owner->isNewRecord) {
             $this->delete($attribute);
         }
         $cropping = $_POST[$class][$attribute . '-cropping'];
         $croppingFileName = md5($uploadImage->name . $this->quality . Json::encode($cropping));
         $croppingFileExt = strrchr($uploadImage->name, '.');
         $croppingFileDir = substr($croppingFileName, 0, 2);
         $croppingFileBasePath = Yii::getAlias($this->basePath) . $this->baseDir;
         if (!is_dir($croppingFileBasePath)) {
             mkdir($croppingFileBasePath, 0755, true);
         }
         $croppingFilePath = Yii::getAlias($this->basePath) . $this->baseDir . DIRECTORY_SEPARATOR . $croppingFileDir;
         if (!is_dir($croppingFilePath)) {
             mkdir($croppingFilePath, 0755, true);
         }
         $fileSavePath = $croppingFilePath . DIRECTORY_SEPARATOR . $croppingFileName . $croppingFileExt;
         $point = new Point($cropping['dataX'], $cropping['dataY']);
         $box = new Box($cropping['dataWidth'], $cropping['dataHeight']);
         $palette = new \Imagine\Image\Palette\RGB();
         $color = $palette->color('fff', 0);
         Image::frame($uploadImage->tempName, 0, 'fff', 0)->rotate($cropping['dataRotate'], $color)->crop($point, $box)->save($fileSavePath, ['quality' => $this->quality]);
         $this->owner->{$attribute} = $this->baseDir . DIRECTORY_SEPARATOR . $croppingFileDir . DIRECTORY_SEPARATOR . $croppingFileName . $croppingFileExt;
     } elseif (isset($_POST[$class][$attribute . '-remove']) && $_POST[$class][$attribute . '-remove']) {
         $this->delete($attribute);
     } elseif (!empty($_POST[$class][$attribute])) {
         $this->owner->{$attribute} = $_POST[$class][$attribute];
     } elseif (isset($this->owner->oldAttributes[$attribute])) {
         $this->owner->{$attribute} = $this->owner->oldAttributes[$attribute];
     }
 }

作者:alexsute    项目:yii2-datecontro   
/**
  * Convert display date for saving to model
  *
  * @return string JSON encoded HTML output
  */
 public function actionConvert()
 {
     $output = '';
     Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
     $post = Yii::$app->request->post();
     if (isset($post['displayDate'])) {
         $saveFormat = ArrayHelper::getValue($post, 'saveFormat');
         $dispFormat = ArrayHelper::getValue($post, 'dispFormat');
         $dispTimezone = ArrayHelper::getValue($post, 'dispTimezone');
         $saveTimezone = ArrayHelper::getValue($post, 'saveTimezone');
         $settings = ArrayHelper::getValue($post, 'settings', []);
         // Russian dates ends with \r. - i dont know why
         if (StringHelper::endsWith($dispFormat, '.')) {
             $dispFormat = substr($dispFormat, 0, strlen($dispFormat) - 4);
             $post['displayDate'] = substr($post['displayDate'], 0, strlen($post['displayDate']) - 4);
         }
         if (ArrayHelper::getValue($post, 'type') != DateControl::FORMAT_DATETIME) {
             $dispTimezone = null;
             $saveTimezone = null;
         }
         $date = DateControl::getTimestamp($post['displayDate'], $dispFormat, $dispTimezone, $settings);
         if (empty($date) || !$date) {
             $value = '';
         } elseif ($saveTimezone != null) {
             $value = $date->setTimezone(new DateTimeZone($saveTimezone))->format($saveFormat);
         } else {
             $value = $date->format($saveFormat);
         }
         return ['status' => 'success', 'output' => $value];
     } else {
         return ['status' => 'error', 'output' => 'No display date found'];
     }
 }

作者:just-le    项目:cardgame-seria   
/**
  * @inheritdoc
  */
 public static function tableName()
 {
     $name = Inflector::camel2id(StringHelper::basename(get_called_class()), '_');
     $length = mb_strlen($name, \Yii::$app->charset) - 7;
     // - mb_strlen('_record', Yii::$app->charset);
     return '{{%' . trim(mb_substr($name, 0, $length, \Yii::$app->charset)) . '}}';
 }

作者:Jaaviiee    项目:PrograWe   
/**
  * @param DOMElement $element
  * @param mixed $data
  */
 protected function buildXml($element, $data)
 {
     if (is_object($data)) {
         $child = new DOMElement(StringHelper::basename(get_class($data)));
         $element->appendChild($child);
         if ($data instanceof Arrayable) {
             $this->buildXml($child, $data->toArray());
         } else {
             $array = [];
             foreach ($data as $name => $value) {
                 $array[$name] = $value;
             }
             $this->buildXml($child, $array);
         }
     } elseif (is_array($data)) {
         foreach ($data as $name => $value) {
             if (is_int($name) && is_object($value)) {
                 $this->buildXml($element, $value);
             } elseif (is_array($value) || is_object($value)) {
                 $child = new DOMElement(is_int($name) ? $this->itemTag : $name);
                 $element->appendChild($child);
                 $this->buildXml($child, $value);
             } else {
                 $child = new DOMElement(is_int($name) ? $this->itemTag : $name);
                 $element->appendChild($child);
                 $child->appendChild(new DOMText((string) $value));
             }
         }
     } else {
         $element->appendChild(new DOMText((string) $data));
     }
 }

作者:atoumu    项目:yii2-rss-reader-exampl   
private function checkForNews()
 {
     try {
         $response = (new Client())->createRequest()->setUrl($this->getCurrentFeed()->url)->send();
         if (!$response->isOk) {
             throw new \Exception();
         }
         $rss = simplexml_load_string($response->getContent());
         $newItemsCount = 0;
         foreach ($rss->channel->item as $item) {
             if (!NewModel::findOne(['feed' => $this->getCurrentFeed()->id, 'url' => (string) $item->link])) {
                 $new = new NewModel();
                 $new->feed = $this->getCurrentFeed()->id;
                 $new->published_at = date_create_from_format(\DateTime::RSS, (string) $item->pubDate)->format('Y-m-d H:i:s');
                 $new->title = (string) $item->title;
                 if (isset($item->description)) {
                     $new->short_text = StringHelper::truncate(strip_tags((string) $item->description), 250);
                 }
                 $new->url = (string) $item->link;
                 if ($new->save()) {
                     $newItemsCount++;
                 }
             }
         }
         if ($newItemsCount > 0) {
             \Yii::$app->session->addFlash('info', \Yii::t('user', 'Get news: ') . $newItemsCount);
             $this->clearOldNewsIfNeed();
             \Yii::$app->cache->delete($this->getNewsCacheKey());
             \Yii::$app->cache->delete($this->getFeedsCacheKey());
         }
     } catch (Exception $e) {
         \Yii::$app->session->addFlash('danger', \Yii::t('user', 'Get news error'));
     }
 }

作者:beaten-sect0    项目:yii2-db-manage   
/**
  * @param $path
  * @param array $dbInfo
  * @param array $restoreOptions
  * @return string
  */
 public function makeRestoreCommand($path, array $dbInfo, array $restoreOptions)
 {
     $arguments = [];
     if (StringHelper::endsWith($path, '.gz', false)) {
         $arguments[] = 'gunzip -c';
         $arguments[] = $path;
         $arguments[] = '|';
     }
     if ($this->isWindows()) {
         $arguments[] = 'set PGPASSWORD=' . $dbInfo['password'];
         $arguments[] = '&';
     } else {
         $arguments[] = 'PGPASSWORD=' . $dbInfo['password'];
     }
     // default port
     if (empty($dbInfo['port'])) {
         $dbInfo['port'] = '5432';
     }
     $arguments = array_merge($arguments, ['psql', '--host=' . $dbInfo['host'], '--port=' . $dbInfo['port'], '--username=' . $dbInfo['username'], '--no-password']);
     if ($restoreOptions['preset']) {
         $arguments[] = trim($restoreOptions['presetData']);
     }
     $arguments[] = $dbInfo['dbName'];
     if (!StringHelper::endsWith($path, '.gz', false)) {
         $arguments[] = '<';
         $arguments[] = $path;
     }
     return implode(' ', $arguments);
 }

作者:13621644    项目:yii2-apido   
/**
  * @param \phpDocumentor\Reflection\BaseReflector $reflector
  * @param Context $context
  * @param array $config
  */
 public function __construct($reflector = null, $context = null, $config = [])
 {
     parent::__construct($config);
     if ($reflector === null) {
         return;
     }
     // base properties
     $this->name = ltrim($reflector->getName(), '\\');
     $this->startLine = $reflector->getNode()->getAttribute('startLine');
     $this->endLine = $reflector->getNode()->getAttribute('endLine');
     $docblock = $reflector->getDocBlock();
     if ($docblock !== null) {
         $this->shortDescription = ucfirst($docblock->getShortDescription());
         if (empty($this->shortDescription) && !$this instanceof PropertyDoc && $context !== null && $docblock->getTagsByName('inheritdoc') === null) {
             $context->errors[] = ['line' => $this->startLine, 'file' => $this->sourceFile, 'message' => "No short description for " . substr(StringHelper::basename(get_class($this)), 0, -3) . " '{$this->name}'"];
         }
         $this->description = $docblock->getLongDescription()->getContents();
         $this->phpDocContext = $docblock->getContext();
         $this->tags = $docblock->getTags();
         foreach ($this->tags as $i => $tag) {
             if ($tag instanceof SinceTag) {
                 $this->since = $tag->getVersion();
                 unset($this->tags[$i]);
             } elseif ($tag instanceof DeprecatedTag) {
                 $this->deprecatedSince = $tag->getVersion();
                 $this->deprecatedReason = $tag->getDescription();
                 unset($this->tags[$i]);
             }
         }
     } elseif ($context !== null) {
         $context->errors[] = ['line' => $this->startLine, 'file' => $this->sourceFile, 'message' => "No docblock for element '{$this->name}'"];
     }
 }

作者:sciurodon    项目:yii   
public function testTruncateWords()
 {
     $this->assertEquals('это тестовая multibyte строка', StringHelper::truncateWords('это тестовая multibyte строка', 5));
     $this->assertEquals('это тестовая multibyte...', StringHelper::truncateWords('это тестовая multibyte строка', 3));
     $this->assertEquals('это тестовая multibyte!!!', StringHelper::truncateWords('это тестовая multibyte строка', 3, '!!!'));
     $this->assertEquals('это строка с          неожиданными...', StringHelper::truncateWords('это строка с          неожиданными пробелами', 4));
 }

作者:hiqde    项目:hipanel-module-dn   
public function rules()
 {
     return [[['type_in', 'hdomain_id_in'], 'filter', 'filter' => function ($value) {
         $res = StringHelper::explode($value, ',', true, true);
         return $res;
     }, 'skipOnArray' => true, 'on' => ['export-hosts']], [['type_in'], 'default', 'value' => ['a', 'aaaa'], 'on' => ['export-hosts']], [['type_in'], 'each', 'rule' => ['in', 'range' => array_keys($this->getTypes())], 'on' => ['export-hosts']], [['hdomain_id_in'], 'required', 'on' => ['export-hosts']]];
 }

作者:ivan-chk    项目:yii2-mozayk   
public function init()
 {
     if (!$this->modelName) {
         $this->modelName = StringHelper::basename(get_class($this), 'Controller');
     }
     if (!$this->modelClass) {
         $modelClass = 'app\\models\\' . $this->modelName;
         if (class_exists($modelClass)) {
             $this->modelClass = $modelClass;
         } else {
             $modelClass = 'app\\models\\readonly\\' . $this->modelName;
             if (class_exists($modelClass)) {
                 $this->modelClass = $modelClass;
             }
         }
     }
     if (!$this->filterModelClass) {
         $filterModelClass = 'app\\models\\search\\' . $this->modelName . 'Search';
         if (class_exists($filterModelClass)) {
             $this->filterModelClass = $filterModelClass;
         } else {
             $filterModelClass = 'app\\models\\readonly\\search\\' . $this->modelName . 'Search';
             if (class_exists($filterModelClass)) {
                 $this->filterModelClass = $filterModelClass;
             }
         }
     }
     parent::init();
 }

作者:kalyabi    项目:yii2-git-vie   
/**
  * @inheritdoc
  */
 public function getDiff($file = null)
 {
     $previewFile = [];
     $ret = [];
     $appendFileDiff = function () use(&$previewFile, &$ret) {
         if (!empty($previewFile)) {
             $ret[] = new Diff($previewFile);
             $previewFile = [];
         }
     };
     $fullDiff = [];
     if (!is_null($file)) {
         $fullDiff = $this->repository->getDiff(Repository::DIFF_PATH, $file, $this->id);
     } else {
         $fullDiff = $this->repository->getDiff(Repository::DIFF_COMMIT, $this->id);
     }
     foreach ($fullDiff as $row) {
         if (StringHelper::startsWith($row, 'diff')) {
             // the new file diff, append to $ret
             $appendFileDiff();
         }
         $previewFile[] = $row;
     }
     // append last file diff to full array
     $appendFileDiff();
     return $ret;
 }

作者:developer-a    项目:yii2-blo   
public static function Preview($models)
 {
     foreach ($models as $key => $model) {
         $models[$key]['text'] = StringHelper::truncate(strip_tags($model['text']), 400);
     }
     return $models;
 }

作者:rajanishtime    项目:basicyi   
public function testBasename()
 {
     $this->assertEquals('', StringHelper::basename(''));
     $this->assertEquals('file', StringHelper::basename('file'));
     $this->assertEquals('file.test', StringHelper::basename('file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('file.test', '.test'));
     $this->assertEquals('file', StringHelper::basename('/file'));
     $this->assertEquals('file.test', StringHelper::basename('/file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('/file.test', '.test'));
     $this->assertEquals('file', StringHelper::basename('/path/to/file'));
     $this->assertEquals('file.test', StringHelper::basename('/path/to/file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('/path/to/file.test', '.test'));
     $this->assertEquals('file', StringHelper::basename('\\file'));
     $this->assertEquals('file.test', StringHelper::basename('\\file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('\\file.test', '.test'));
     $this->assertEquals('file', StringHelper::basename('C:\\file'));
     $this->assertEquals('file.test', StringHelper::basename('C:\\file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('C:\\file.test', '.test'));
     $this->assertEquals('file', StringHelper::basename('C:\\path\\to\\file'));
     $this->assertEquals('file.test', StringHelper::basename('C:\\path\\to\\file.test', '.test2'));
     $this->assertEquals('file', StringHelper::basename('C:\\path\\to\\file.test', '.test'));
     // mixed paths
     $this->assertEquals('file.test', StringHelper::basename('/path\\to/file.test'));
     $this->assertEquals('file.test', StringHelper::basename('/path/to\\file.test'));
     $this->assertEquals('file.test', StringHelper::basename('\\path/to\\file.test'));
     // \ and / in suffix
     $this->assertEquals('file', StringHelper::basename('/path/to/filete/st', 'te/st'));
     $this->assertEquals('st', StringHelper::basename('/path/to/filete/st', 'te\\st'));
     $this->assertEquals('file', StringHelper::basename('/path/to/filete\\st', 'te\\st'));
     $this->assertEquals('st', StringHelper::basename('/path/to/filete\\st', 'te/st'));
     // http://www.php.net/manual/en/function.basename.php#72254
     $this->assertEquals('foo', StringHelper::basename('/bar/foo/'));
     $this->assertEquals('foo', StringHelper::basename('\\bar\\foo\\'));
 }

作者:rocketyan    项目:hasscms-ap   
public function getMetaData()
 {
     $model = $this->getMetaModel();
     $title = $model->title ?: $this->title;
     $description = $model->description ?: StringHelper::truncate(strip_tags($this->content), 200);
     return [$title, $description, $model->keywords];
 }

作者:cj    项目:yii2-playgroun   
public function actionIndex()
 {
     $actions = [];
     $rc = new \ReflectionClass($this);
     $publicMethods = $rc->getMethods(\ReflectionMethod::IS_PUBLIC);
     $availableActions = [];
     foreach ($publicMethods as $publicMethod) {
         $methodName = $publicMethod->name;
         if ($methodName == 'actions') {
             continue;
         }
         if (StringHelper::startsWith($methodName, 'action')) {
             $availableActions[] = $methodName;
         }
     }
     if (count($this->actions()) > 0) {
         $availableActions = $availableActions + array_keys($this->actions());
     }
     $menus = [];
     foreach ($availableActions as $actionName) {
         $routeId = Inflector::camel2id(substr($actionName, strlen('action')));
         $menus[] = Html::a($actionName, [$routeId]);
     }
     echo implode('<br/>', $menus);
 }

作者:marciocamell    项目:yii2-simplecha   
/**
  * @inheritDoc
  */
 public function formatConversation($model)
 {
     $model = parent::formatConversation($model);
     $model['date'] = DateHelper::formatConversationDate($model['created_at']);
     $model['text'] = StringHelper::truncate($model['text'], 20);
     return $model;
 }

作者:tunecin    项目:yii2-nested-res   
/**
  * Unlinks two or more models by provided primary key or a list of primary keys.
  * If the relation type is a many_to_many. related row in the junction table will be deleted.
  * Otherwise related foreign key will be simply set to NULL.
  * A '204' response should be set to headers if any change has been made.
  * @param string $IDs should hold the list of IDs related to the models to be unlinken from the relative one.
  * it must be a string of the primary keys values separated by commas.
  * @throws BadRequestHttpException if any of the models are not linked.
  * @throws InvalidCallException if the models cannot be unlinked
  */
 public function run($IDs)
 {
     $relModel = $this->getRelativeModel();
     $modelClass = $this->modelClass;
     $pk = $modelClass::primaryKey()[0];
     $getter = 'get' . $this->relationName;
     $ids = preg_split('/\\s*,\\s*/', $IDs, -1, PREG_SPLIT_NO_EMPTY);
     $to_unlink = [];
     foreach ($ids as $pk_value) {
         $linked = $relModel->{$getter}()->where([$pk => $pk_value])->exists();
         if ($linked === true) {
             $to_unlink[] = $this->findModel($pk_value);
         } else {
             throw new BadRequestHttpException(StringHelper::basename($modelClass) . " '{$pk_value}' not linked to " . StringHelper::basename($this->relativeClass) . " '{$this->relative_id}'.");
         }
     }
     $relType = $relModel->getRelation($this->relationName);
     $delete = $relType->multiple === true && $relType->via !== null;
     foreach ($to_unlink as $model) {
         if ($this->checkAccess) {
             call_user_func($this->checkAccess, $this->id, $model);
         }
         $relModel->unlink($this->relationName, $model, $delete);
     }
     Yii::$app->getResponse()->setStatusCode(204);
 }

作者:novikovserge    项目:doublegi   
public static function locationStringToGeometry($location)
 {
     if (preg_match('/^(\\-?\\d+(\\.\\d+)?),(\\-?\\d+(\\.\\d+)?)$/', $location, $match)) {
         $location = \yii\helpers\StringHelper::explode($location, ',');
         return self::getPostgisFormatByCoordinate($location[0], $location[1]);
     }
     return null;
 }

作者:sintre    项目:yii2-basic-sintre   
public function getThumbnailTrue()
 {
     if ($this->image) {
         $name = \yii\helpers\StringHelper::basename($this->image);
         $dir = \yii\helpers\StringHelper::dirname($this->image);
         return Yii::getAlias($dir . '/thumb/' . $name);
     }
 }


问题


面经


文章

微信
公众号

扫码关注公众号