Skip to content

Commit 1c85d9c

Browse files
authored
Fix CakePHP 5.3 behavior method call deprecations (#22)
Use $table->getBehavior('Expose')->methodName() instead of calling behavior methods directly on the table instance. - Updated commands to use getBehavior() for getExposedKey() and initExposedField() - Updated tests to use the same pattern - Removed phpstan ignores that are no longer needed
1 parent 1852cc6 commit 1c85d9c

4 files changed

Lines changed: 30 additions & 22 deletions

File tree

phpstan.neon

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,3 @@ parameters:
77
ignoreErrors:
88
- identifier: missingType.iterableValue
99
- identifier: missingType.generics
10-
- '#Call to an undefined method Cake\\ORM\\Table::getExposedKey\(\).#'
11-
- '#PHPDoc tag @\w+ for \w+ \$table contains unresolvable type.#'

src/Command/AddExposedFieldCommand.php

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ public function execute(Arguments $args, ConsoleIo $io): ?int {
5151
$io->abort('You need to attach the Expose.Expose behavior to this model first (' . $table::class . '). Then we can create the migration for it.');
5252
}
5353

54-
/** @phpstan-var \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $table */
55-
$field = $table->getExposedKey();
54+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
55+
$exposeBehavior = $table->getBehavior('Expose');
56+
$field = $exposeBehavior->getExposedKey();
5657
$fieldExists = $table->hasField($field);
5758

5859
if ($fieldExists) {
@@ -162,7 +163,7 @@ protected function buildOptionParser(ConsoleOptionParser $parser): ConsoleOption
162163

163164
/**
164165
* @param string $migrationName
165-
* @param \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $table
166+
* @param \Cake\ORM\Table $table
166167
* @param bool $containsRecords
167168
* @param bool $binary
168169
*
@@ -191,14 +192,16 @@ public function change(): void
191192
}
192193

193194
/**
194-
* @param \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $table
195+
* @param \Cake\ORM\Table $table
195196
* @param bool $containsRecords
196197
* @param bool $binary
197198
*
198199
* @return string
199200
*/
200201
protected function generateOperations(Table $table, bool $containsRecords, bool $binary): string {
201-
$field = $table->getExposedKey();
202+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
203+
$exposeBehavior = $table->getBehavior('Expose');
204+
$field = $exposeBehavior->getExposedKey();
202205
$tableName = $table->getTable();
203206
$null = $containsRecords ? 'true' : 'false';
204207
$type = $binary ? 'binary' : 'uuid';
@@ -229,12 +232,14 @@ protected function generateOperations(Table $table, bool $containsRecords, bool
229232
}
230233

231234
/**
232-
* @param \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $table
235+
* @param \Cake\ORM\Table $table
233236
*
234237
* @return string
235238
*/
236239
protected function generateUpdateOperation(Table $table): string {
237-
$field = $table->getExposedKey();
240+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
241+
$exposeBehavior = $table->getBehavior('Expose');
242+
$field = $exposeBehavior->getExposedKey();
238243
$tableName = $table->getTable();
239244

240245
$operations = <<<TXT

src/Command/PopulateExposedFieldCommand.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,14 @@ public function execute(Arguments $args, ConsoleIo $io): ?int {
3434
$io->abort('Model missing');
3535
}
3636

37-
/** @var \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $table */
3837
$table = $this->getTableLocator()->get($model);
3938

40-
$field = $table->getExposedKey();
39+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
40+
$exposeBehavior = $table->getBehavior('Expose');
41+
$field = $exposeBehavior->getExposedKey();
4142
$io->out('Populating ' . $model . ' `' . $field . '` field ...');
4243

43-
$count = $table->initExposedField();
44+
$count = $exposeBehavior->initExposedField();
4445

4546
$io->success('Populated ' . $count . ' records. Nothing else left.');
4647

tests/TestCase/Model/Behavior/ExposeBehaviorTest.php

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,17 @@ public function testFindExposed(): void {
110110

111111
$uuid = $user->uuid;
112112

113-
$field = $this->Users->getExposedKey();
113+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
114+
$exposeBehavior = $this->Users->getBehavior('Expose');
115+
$field = $exposeBehavior->getExposedKey();
114116
$this->assertSame('uuid', $field);
115117

116118
/** @var \TestApp\Model\Entity\User $result */
117119
$result = $this->Users->find('exposed', $uuid)->firstOrFail();
118120

119121
$this->assertSame($user->id, $result->id);
120122

121-
$field = $this->Users->getExposedKey(true);
123+
$field = $exposeBehavior->getExposedKey(true);
122124
$this->assertSame('Users.uuid', $field);
123125
}
124126

@@ -130,15 +132,17 @@ public function testFindExposedLegacy(): void {
130132

131133
$uuid = $user->uuid;
132134

133-
$field = $this->Users->getExposedKey();
135+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
136+
$exposeBehavior = $this->Users->getBehavior('Expose');
137+
$field = $exposeBehavior->getExposedKey();
134138
$this->assertSame('uuid', $field);
135139

136140
/** @var \TestApp\Model\Entity\User $result */
137141
$result = $this->Users->find('exposed', ...[$field => $uuid])->firstOrFail();
138142

139143
$this->assertSame($user->id, $result->id);
140144

141-
$field = $this->Users->getExposedKey(true);
145+
$field = $exposeBehavior->getExposedKey(true);
142146
$this->assertSame('Users.uuid', $field);
143147
}
144148

@@ -197,11 +201,11 @@ public function testCustomExposedFieldBeforeMarshal(): void {
197201
*/
198202
public function testInitExposedField(): void {
199203
$customFieldRecordsTable = TableRegistry::getTableLocator()->get('ExistingRecords');
200-
201-
/** @var \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $customFieldRecordsTable */
202204
$customFieldRecordsTable->addBehavior('Expose.Expose');
203205

204-
$count = $customFieldRecordsTable->initExposedField();
206+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
207+
$exposeBehavior = $customFieldRecordsTable->getBehavior('Expose');
208+
$count = $exposeBehavior->initExposedField();
205209
$this->assertSame(1, $count);
206210

207211
$records = $customFieldRecordsTable->find()->find('list', ...['valueField' => 'uuid'])->toArray();
@@ -237,14 +241,14 @@ public function testBinaryUuidField(): void {
237241
*/
238242
public function testInitExposedFieldWithCustomPrimaryKey(): void {
239243
$customPrimaryKeyTable = TableRegistry::getTableLocator()->get('CustomPrimaryKeyRecords');
240-
241-
/** @var \Cake\ORM\Table&\Expose\Model\Behavior\ExposeBehavior $customPrimaryKeyTable */
242244
$customPrimaryKeyTable->addBehavior('Expose.Expose');
243245

244246
$primaryKey = $customPrimaryKeyTable->getPrimaryKey();
245247
$this->assertSame('code', $primaryKey);
246248

247-
$count = $customPrimaryKeyTable->initExposedField();
249+
/** @var \Expose\Model\Behavior\ExposeBehavior $exposeBehavior */
250+
$exposeBehavior = $customPrimaryKeyTable->getBehavior('Expose');
251+
$count = $exposeBehavior->initExposedField();
248252
$this->assertSame(2, $count);
249253

250254
$records = $customPrimaryKeyTable->find()->toArray();

0 commit comments

Comments
 (0)