Update to Drupal 8.0.0-rc3. For more information, see https://www.drupal.org/node/2608078
This commit is contained in:
parent
6419a031d7
commit
4afb23bbd3
762 changed files with 20080 additions and 6368 deletions
|
@ -21,6 +21,9 @@ use Drupal\Component\Utility\Unicode;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Connection.
|
||||
*/
|
||||
class Connection extends DatabaseConnection {
|
||||
|
||||
/**
|
||||
|
@ -33,6 +36,16 @@ class Connection extends DatabaseConnection {
|
|||
*/
|
||||
const UNSUPPORTED_CHARSET = 2019;
|
||||
|
||||
/**
|
||||
* Driver-specific error code for "Unknown character set" error.
|
||||
*/
|
||||
const UNKNOWN_CHARSET = 1115;
|
||||
|
||||
/**
|
||||
* SQLSTATE error code for "Syntax error or access rule violation".
|
||||
*/
|
||||
const SQLSTATE_SYNTAX_ERROR = 42000;
|
||||
|
||||
/**
|
||||
* Flag to indicate if the cleanup function in __destruct() should run.
|
||||
*
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Delete as QueryDelete;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Delete.
|
||||
*/
|
||||
class Delete extends QueryDelete { }
|
||||
|
|
|
@ -9,6 +9,9 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Insert as QueryInsert;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Insert.
|
||||
*/
|
||||
class Insert extends QueryInsert {
|
||||
|
||||
public function execute() {
|
||||
|
|
|
@ -71,7 +71,7 @@ class Tasks extends InstallTasks {
|
|||
}
|
||||
catch (\Exception $e) {
|
||||
// Detect utf8mb4 incompability.
|
||||
if ($e->getCode() == Connection::UNSUPPORTED_CHARSET) {
|
||||
if ($e->getCode() == Connection::UNSUPPORTED_CHARSET || ($e->getCode() == Connection::SQLSTATE_SYNTAX_ERROR && $e->errorInfo[1] == Connection::UNKNOWN_CHARSET)) {
|
||||
$this->fail(t('Your MySQL server and PHP MySQL driver must support utf8mb4 character encoding. Make sure to use a database system that supports this (such as MySQL/MariaDB/Percona 5.5.3 and up), and that the utf8mb4 character set is compiled in. See the <a href=":documentation" target="_blank">MySQL documentation</a> for more information.', array(':documentation' => 'https://dev.mysql.com/doc/refman/5.0/en/cannot-initialize-character-set.html')));
|
||||
$info = Database::getConnectionInfo();
|
||||
$info_copy = $info;
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Merge as QueryMerge;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Merge.
|
||||
*/
|
||||
class Merge extends QueryMerge { }
|
||||
|
|
|
@ -19,6 +19,9 @@ use Drupal\Component\Utility\Unicode;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Schema.
|
||||
*/
|
||||
class Schema extends DatabaseSchema {
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Select as QuerySelect;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Select.
|
||||
*/
|
||||
class Select extends QuerySelect { }
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Transaction as DatabaseTransaction;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Transaction.
|
||||
*/
|
||||
class Transaction extends DatabaseTransaction { }
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Truncate as QueryTruncate;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Truncate.
|
||||
*/
|
||||
class Truncate extends QueryTruncate { }
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
|
||||
use Drupal\Core\Database\Query\Update as QueryUpdate;
|
||||
|
||||
/**
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Update.
|
||||
*/
|
||||
class Update extends QueryUpdate { }
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\mysql;
|
|||
use Drupal\Core\Database\Query\Upsert as QueryUpsert;
|
||||
|
||||
/**
|
||||
* Implements the Upsert query for the MySQL database driver.
|
||||
* MySQL implementation of \Drupal\Core\Database\Query\Upsert.
|
||||
*/
|
||||
class Upsert extends QueryUpsert {
|
||||
|
||||
|
|
|
@ -16,6 +16,9 @@ use Drupal\Core\Database\DatabaseNotFoundException;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Connection.
|
||||
*/
|
||||
class Connection extends DatabaseConnection {
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,6 +9,9 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
|
||||
use Drupal\Core\Database\Query\Delete as QueryDelete;
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Delete.
|
||||
*/
|
||||
class Delete extends QueryDelete {
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,6 +15,9 @@ use Drupal\Core\Database\Query\Insert as QueryInsert;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Insert.
|
||||
*/
|
||||
class Insert extends QueryInsert {
|
||||
|
||||
public function execute() {
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
|
||||
use Drupal\Core\Database\Query\Merge as QueryMerge;
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Merge.
|
||||
*/
|
||||
class Merge extends QueryMerge { }
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
use Drupal\Core\Database\Query\Upsert as QueryUpsert;
|
||||
|
||||
/**
|
||||
* Implements the native Upsert query for the PostgreSQL database driver.
|
||||
* PostgreSQL implementation of native \Drupal\Core\Database\Query\Upsert.
|
||||
*
|
||||
* @see http://www.postgresql.org/docs/9.5/static/sql-insert.html#SQL-ON-CONFLICT
|
||||
*/
|
||||
|
|
|
@ -17,6 +17,9 @@ use Drupal\Core\Database\Schema as DatabaseSchema;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Schema.
|
||||
*/
|
||||
class Schema extends DatabaseSchema {
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,9 @@ use Drupal\Core\Database\Query\Select as QuerySelect;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Select.
|
||||
*/
|
||||
class Select extends QuerySelect {
|
||||
|
||||
public function orderRandom() {
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
|
||||
use Drupal\Core\Database\Transaction as DatabaseTransaction;
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Transaction.
|
||||
*/
|
||||
class Transaction extends DatabaseTransaction { }
|
||||
|
|
|
@ -9,6 +9,9 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
|
||||
use Drupal\Core\Database\Query\Truncate as QueryTruncate;
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Truncate.
|
||||
*/
|
||||
class Truncate extends QueryTruncate {
|
||||
|
||||
/**
|
||||
|
|
|
@ -11,6 +11,9 @@ use Drupal\Core\Database\Database;
|
|||
use Drupal\Core\Database\Query\Update as QueryUpdate;
|
||||
use Drupal\Core\Database\Query\SelectInterface;
|
||||
|
||||
/**
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Update.
|
||||
*/
|
||||
class Update extends QueryUpdate {
|
||||
|
||||
public function execute() {
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\pgsql;
|
|||
use Drupal\Core\Database\Query\Upsert as QueryUpsert;
|
||||
|
||||
/**
|
||||
* Implements the Upsert query for the PostgreSQL database driver.
|
||||
* PostgreSQL implementation of \Drupal\Core\Database\Query\Upsert.
|
||||
*/
|
||||
class Upsert extends QueryUpsert {
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ use Drupal\Core\Database\DatabaseNotFoundException;
|
|||
use Drupal\Core\Database\Connection as DatabaseConnection;
|
||||
|
||||
/**
|
||||
* Specific SQLite implementation of DatabaseConnection.
|
||||
* SQLite implementation of \Drupal\Core\Database\Connection.
|
||||
*/
|
||||
class Connection extends DatabaseConnection {
|
||||
|
||||
|
|
|
@ -10,6 +10,6 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
use Drupal\Core\Database\Query\Delete as QueryDelete;
|
||||
|
||||
/**
|
||||
* SQLite specific implementation of \Drupal\Core\Database\Query\Delete.
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Delete.
|
||||
*/
|
||||
class Delete extends QueryDelete { }
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
use Drupal\Core\Database\Query\Insert as QueryInsert;
|
||||
|
||||
/**
|
||||
* SQLite specific implementation of InsertQuery.
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Insert.
|
||||
*
|
||||
* We ignore all the default fields and use the clever SQLite syntax:
|
||||
* INSERT INTO table DEFAULT VALUES
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
|
||||
use Drupal\Core\Database\Query\Merge as QueryMerge;
|
||||
|
||||
/**
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Merge.
|
||||
*/
|
||||
class Merge extends QueryMerge { }
|
||||
|
|
|
@ -17,6 +17,9 @@ use Drupal\Core\Database\Schema as DatabaseSchema;
|
|||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* SQLite implementation of \Drupal\Core\Database\Schema.
|
||||
*/
|
||||
class Schema extends DatabaseSchema {
|
||||
|
||||
/**
|
||||
|
|
|
@ -9,6 +9,9 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
|
||||
use Drupal\Core\Database\Query\Select as QuerySelect;
|
||||
|
||||
/**
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Select.
|
||||
*/
|
||||
class Select extends QuerySelect {
|
||||
public function forUpdate($set = TRUE) {
|
||||
// SQLite does not support FOR UPDATE so nothing to do.
|
||||
|
|
|
@ -11,7 +11,7 @@ use Drupal\Core\Database\StatementPrefetch;
|
|||
use Drupal\Core\Database\StatementInterface;
|
||||
|
||||
/**
|
||||
* Specific SQLite implementation of DatabaseConnection.
|
||||
* SQLite implementation of \Drupal\Core\Database\Statement.
|
||||
*
|
||||
* The PDO SQLite driver only closes SELECT statements when the PDOStatement
|
||||
* destructor is called and SQLite does not allow data change (INSERT,
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
|
||||
use Drupal\Core\Database\Transaction as DatabaseTransaction;
|
||||
|
||||
/**
|
||||
* SQLite implementation of \Drupal\Core\Database\Transaction.
|
||||
*/
|
||||
class Transaction extends DatabaseTransaction { }
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
use Drupal\Core\Database\Query\Truncate as QueryTruncate;
|
||||
|
||||
/**
|
||||
* SQLite specific implementation of TruncateQuery.
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Truncate.
|
||||
*
|
||||
* SQLite doesn't support TRUNCATE, but a DELETE query with no condition has
|
||||
* exactly the effect (it is implemented by DROPing the table).
|
||||
|
|
|
@ -9,4 +9,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
|
||||
use Drupal\Core\Database\Query\Update as QueryUpdate;
|
||||
|
||||
/**
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Update.
|
||||
*/
|
||||
class Update extends QueryUpdate { }
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Drupal\Core\Database\Driver\sqlite;
|
|||
use Drupal\Core\Database\Query\Upsert as QueryUpsert;
|
||||
|
||||
/**
|
||||
* Implements the Upsert query for the SQLite database driver.
|
||||
* SQLite implementation of \Drupal\Core\Database\Query\Upsert.
|
||||
*/
|
||||
class Upsert extends QueryUpsert {
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ class Condition implements ConditionInterface, \Countable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::condition().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function condition($field, $value = NULL, $operator = '=') {
|
||||
if (empty($operator)) {
|
||||
|
@ -88,7 +88,7 @@ class Condition implements ConditionInterface, \Countable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::where().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function where($snippet, $args = array()) {
|
||||
$this->conditions[] = array(
|
||||
|
@ -102,42 +102,42 @@ class Condition implements ConditionInterface, \Countable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::isNull().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isNull($field) {
|
||||
return $this->condition($field, NULL, 'IS NULL');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::isNotNull().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isNotNull($field) {
|
||||
return $this->condition($field, NULL, 'IS NOT NULL');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::exists().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function exists(SelectInterface $select) {
|
||||
return $this->condition('', $select, 'EXISTS');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::notExists().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function notExists(SelectInterface $select) {
|
||||
return $this->condition('', $select, 'NOT EXISTS');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::conditions().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function &conditions() {
|
||||
return $this->conditions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::arguments().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function arguments() {
|
||||
// If the caller forgot to call compile() first, refuse to run.
|
||||
|
@ -148,7 +148,7 @@ class Condition implements ConditionInterface, \Countable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compile().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compile(Connection $connection, PlaceholderInterface $queryPlaceholder) {
|
||||
// Re-compile if this condition changed or if we are compiled against a
|
||||
|
@ -247,7 +247,7 @@ class Condition implements ConditionInterface, \Countable {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compiled().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compiled() {
|
||||
return !$this->changed;
|
||||
|
|
|
@ -47,8 +47,8 @@ class Delete extends Query implements ConditionInterface {
|
|||
/**
|
||||
* Executes the DELETE query.
|
||||
*
|
||||
* @return
|
||||
* The return value is dependent on the database connection.
|
||||
* @return int
|
||||
* The number of rows affected by the delete query.
|
||||
*/
|
||||
public function execute() {
|
||||
$values = array();
|
||||
|
|
|
@ -26,7 +26,7 @@ trait QueryConditionTrait {
|
|||
protected $condition;
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::condition().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function condition($field, $value = NULL, $operator = '=') {
|
||||
$this->condition->condition($field, $value, $operator);
|
||||
|
@ -34,7 +34,7 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::isNull().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isNull($field) {
|
||||
$this->condition->isNull($field);
|
||||
|
@ -42,7 +42,7 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::isNotNull().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function isNotNull($field) {
|
||||
$this->condition->isNotNull($field);
|
||||
|
@ -50,7 +50,7 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::exists().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function exists(SelectInterface $select) {
|
||||
$this->condition->exists($select);
|
||||
|
@ -58,7 +58,7 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::notExists().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function notExists(SelectInterface $select) {
|
||||
$this->condition->notExists($select);
|
||||
|
@ -66,21 +66,21 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::conditions().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function &conditions() {
|
||||
return $this->condition->conditions();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::arguments().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function arguments() {
|
||||
return $this->condition->arguments();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::where().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function where($snippet, $args = array()) {
|
||||
$this->condition->where($snippet, $args);
|
||||
|
@ -88,35 +88,35 @@ trait QueryConditionTrait {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compile().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compile(Connection $connection, PlaceholderInterface $queryPlaceholder) {
|
||||
$this->condition->compile($connection, $queryPlaceholder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compiled().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compiled() {
|
||||
return $this->condition->compiled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::conditionGroupFactory().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function conditionGroupFactory($conjunction = 'AND') {
|
||||
return new Condition($conjunction);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::andConditionGroup().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function andConditionGroup() {
|
||||
return $this->conditionGroupFactory('AND');
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::orConditionGroup().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function orConditionGroup() {
|
||||
return $this->conditionGroupFactory('OR');
|
||||
|
|
|
@ -40,14 +40,14 @@ class Truncate extends Query {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compile().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compile(Connection $connection, PlaceholderInterface $queryPlaceholder) {
|
||||
return $this->condition->compile($connection, $queryPlaceholder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\Core\Database\Query\ConditionInterface::compiled().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function compiled() {
|
||||
return $this->condition->compiled();
|
||||
|
|
|
@ -56,14 +56,14 @@ abstract class Schema implements PlaceholderInterface {
|
|||
}
|
||||
|
||||
/**
|
||||
* Implements PlaceHolderInterface::uniqueIdentifier().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function uniqueIdentifier() {
|
||||
return $this->uniqueIdentifier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements PlaceHolderInterface::nextPlaceholder().
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function nextPlaceholder() {
|
||||
return $this->placeholder++;
|
||||
|
|
Reference in a new issue