Completed
Push — master ( 0a2d22...d0642e )
by James Ekow Abaka
02:53
created

AbstractDatabaseManipulator::getDefaultSchema()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace yentu\manipulators;
4
5
use ntentan\atiaa\DriverFactory;
6
use clearice\ConsoleIO;
7
use yentu\Yentu;
8
use yentu\DatabaseAssertor;
9
use yentu\SchemaDescription;
10
use yentu\Parameters;
11
12
abstract class AbstractDatabaseManipulator
13
{
14
15
    const CONVERT_TO_DRIVER = 'driver';
16
    const CONVERT_TO_YENTU = 'yentu';
17
18
    private $schemaDescription;
19
    private $assertor;
20
    private $connection;
21
    private $dumpQuery;
22
    private $disableQuery;
23
    protected $defaultSchema;
24
    private $io;
25
26 33
    public function __construct(Yentu $yentu, DriverFactory $driverFactory, ConsoleIO $io)
0 ignored issues
show
Unused Code introduced by
The parameter $yentu is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
27
    {
28 33
        $this->connection = $driverFactory->createDriver();
29 33
        $this->connection->connect();
30 33
        $this->io = $io;
31 33
    }
32
33 33
    public function __get($name)
34
    {
35 33
        if ($name === 'description') {
36 33
            return $this->getDescription();
37
        }
38
    }
39
40 10
    public function setDumpQuery($dumpQuery)
41
    {
42 10
        $this->dumpQuery = $dumpQuery;
43 10
    }
44
45 10
    public function setDisableQuery($disableQuery)
46
    {
47 10
        $this->disableQuery = $disableQuery;
48 10
    }
49
50 30
    public function __call($name, $arguments)
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
51
    {
52 30
        if (preg_match("/^(add|drop|change|executeQuery|reverseQuery)/", $name)) {
53 30
            $details = Parameters::wrap($arguments[0]);
54 30
            $this->description->$name($details);
0 ignored issues
show
Bug introduced by
The property description does not seem to exist. Did you mean schemaDescription?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
55 30
            $name = "_$name";
56 30
            new \ReflectionMethod($this, $name);
57 30
            return $this->$name($details);
58
        } else {
59
            throw new \Exception("Failed to execute method '$name'");
60
        }
61
    }
62
63 30
    public function query($query, $bind = false)
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
64
    {
65
        try {
66 30
            if ($this->dumpQuery) {
67
                echo "$query\n";
68
            }
69
70 30
            $this->io->output("\n    > Running Query [$query]", ConsoleIO::OUTPUT_LEVEL_3);
71
72 30
            if ($this->disableQuery !== true) {
73 30
                return $this->connection->query($query, $bind);
0 ignored issues
show
Documentation introduced by
$bind is of type boolean, but the function expects a false|array<integer,*>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
74
            }
75 1
        } catch (\ntentan\atiaa\exceptions\DatabaseDriverException $e) {
76 1
            throw new exceptions\DatabaseManipulatorException($e->getMessage());
77
        }
78 10
    }
79
80 27
    public function disconnect()
81
    {
82 27
        $this->connection->disconnect();
83 27
    }
84
85 1
    public function getDefaultSchema()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
86
    {
87 1
        return $this->connection->getDefaultSchema();
88
    }
89
90 30
    public function getAssertor()
91
    {
92 30
        if (!is_object($this->assertor)) {
93 30
            $this->assertor = new DatabaseAssertor($this->description);
0 ignored issues
show
Bug introduced by
The property description does not seem to exist. Did you mean schemaDescription?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
94
        }
95 30
        return $this->assertor;
96
    }
97
98
    abstract protected function _addSchema($name);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
99
100
    abstract protected function _dropSchema($name);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
101
102
    abstract protected function _addTable($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
103
104
    abstract protected function _dropTable($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
105
106
    abstract protected function _changeTableName($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
107
108
    abstract protected function _addColumn($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
109
110
    abstract protected function _changeColumnNulls($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
111
112
    abstract protected function _changeColumnName($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
113
114
    abstract protected function _changeColumnDefault($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
115
116
    abstract protected function _dropColumn($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
117
118
    abstract protected function _addPrimaryKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
119
120
    abstract protected function _dropPrimaryKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
121
122
    abstract protected function _addUniqueKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
123
124
    abstract protected function _dropUniqueKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
125
126
    abstract protected function _addAutoPrimaryKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
127
128
    abstract protected function _dropAutoPrimaryKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
129
130
    abstract protected function _addForeignKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
131
132
    abstract protected function _dropForeignKey($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
133
134
    abstract protected function _addIndex($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
135
136
    abstract protected function _dropIndex($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
137
138
    abstract protected function _addView($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
139
140
    abstract protected function _dropView($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
141
142
    abstract protected function _changeViewDefinition($details);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
143
144
    protected function _changeForeignKeyOnDelete($details)
145
    {
146
        $this->_dropForeignKey($details['from']);
147
        $this->_addForeignKey($details['to']);
148
    }
149
150
    protected function _changeForeignKeyOnUpdate($details)
151
    {
152
        $this->_dropForeignKey($details['from']);
153
        $this->_addForeignKey($details['to']);
154
    }
155
156
    protected function _executeQuery($details)
157
    {
158
        $this->query($details['query'], $details['bind'] ?? []);
159
    }
160
161
    protected function _reverseQuery($details)
0 ignored issues
show
Unused Code introduced by
The parameter $details is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
162
    {
163
        
164
    }
165
166
    abstract public function convertTypes($type, $direction, $length);
0 ignored issues
show
Documentation introduced by
For interfaces and abstract methods it is generally a good practice to add a @return annotation even if it is just @return void or @return null, so that implementors know what to do in the overridden method.

For interface and abstract methods, it is impossible to infer the return type from the immediate code. In these cases, it is generally advisible to explicitly annotate these methods with a @return doc comment to communicate to implementors of these methods what they are expected to return.

Loading history...
167
168
    /**
169
     * 
170
     * @return SchemaDescription
171
     */
172 33
    public function getDescription()
173
    {
174 33
        if (!is_object($this->schemaDescription)) {
175 33
            $this->schemaDescription = SchemaDescription::wrap($this->connection->describe(), $this);
176
        }
177 33
        return $this->schemaDescription;
178
    }
179
180 8
    public function setVersion($version)
181
    {
182 8
        $this->query('INSERT INTO yentu_history(version) values (?)', array($version));
0 ignored issues
show
Documentation introduced by
array($version) is of type array<integer,?,{"0":"?"}>, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
183 8
    }
184
185
    public function getVersion()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
186
    {
187
        $version = $this->query("SELECT MAX(version) as version FROM yentu_history");
188
        return isset($version[0]) ? $version[0]['version'] : null;
189
    }
190
191 6
    public function getLastSession()
0 ignored issues
show
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
192
    {
193 6
        $session = $this->query("SELECT session FROM yentu_history ORDER BY id DESC LIMIT 1");
194 6
        return isset($session[0]['session']) ? $session[0]['session'] : null;
195
    }
196
197 3
    public function getSessionVersions($session)
198
    {
199 3
        $sessionVersions = array();
200 3
        $versions = $this->query(
201 3
            "SELECT DISTINCT version FROM yentu_history WHERE session = ?", array($session)
0 ignored issues
show
Documentation introduced by
array($session) is of type array<integer,?,{"0":"?"}>, but the function expects a boolean.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
202
        );
203
204 3
        foreach ($versions as $version) {
205 3
            $sessionVersions[] = $version['version'];
206
        }
207
208 3
        return $sessionVersions;
209
    }
210
211 27
    public function createHistory()
212
    {
213
        try {
214 27
            $this->connection->describeTable('yentu_history');
215 27
        } catch (\ntentan\atiaa\exceptions\TableNotFoundException $e) {
216 27
            $this->io->pushOutputLevel(ConsoleIO::OUTPUT_LEVEL_0);
217 27
            $this->addTable(array('schema' => '', 'name' => 'yentu_history'));
0 ignored issues
show
Bug introduced by
The method addTable() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addTable()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
218
219 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'session', 'type' => 'string'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
220 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => false, 'length' => null, 'table' => 'yentu_history', 'name' => 'version', 'type' => 'string'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
221 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'method', 'type' => 'string'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
222 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'arguments', 'type' => 'text'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
223 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'migration', 'type' => 'string'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
224 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'default_schema', 'type' => 'string'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
225 27
            $this->addColumn(array('default' => null, 'schema' => '', 'nulls' => true, 'length' => null, 'table' => 'yentu_history', 'name' => 'id', 'type' => 'integer'));
0 ignored issues
show
Bug introduced by
The method addColumn() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addColumn()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
226 27
            $this->addPrimaryKey(array('schema' => '', 'table' => 'yentu_history', 'name' => 'yentu_history_pk', 'columns' => array('id')));
0 ignored issues
show
Bug introduced by
The method addPrimaryKey() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addPrimaryKey()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
227 27
            $this->addAutoPrimaryKey(array('schema' => '', 'table' => 'yentu_history', 'column' => 'id'));
0 ignored issues
show
Bug introduced by
The method addAutoPrimaryKey() does not exist on yentu\manipulators\AbstractDatabaseManipulator. Did you maybe mean _addAutoPrimaryKey()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
228 27
            $this->io->popOutputLevel();
229
        }
230 27
    }
231
232 10
    public function __clone()
233
    {
234 10
        if (is_object($this->schemaDescription)) {
235
            $this->schemaDescription = clone $this->schemaDescription;
236
        }
237 10
    }
238
239
}
240