Skip to content

Commit e737ada

Browse files
committed
fix: Improve some code
1 parent 23b7931 commit e737ada

File tree

5 files changed

+31
-71
lines changed

5 files changed

+31
-71
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"authors": [
1414
{
1515
"name": "TechLee",
16-
"email": "techlee@qq.com"
16+
"email": "leeqvip@gmail.com"
1717
}
1818
],
1919
"license": "Apache-2.0",

src/Adapter.php

Lines changed: 25 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,20 @@
66

77
use Casbin\Persist\AdapterHelper;
88
use Casbin\Model\Model;
9-
use Casbin\Persist\BatchAdapter;
10-
use Casbin\Persist\FilteredAdapter;
11-
use Casbin\Persist\UpdatableAdapter;
9+
use Casbin\Persist\{BatchAdapter, FilteredAdapter, UpdatableAdapter};
1210
use Closure;
1311
use Doctrine\DBAL\Configuration;
14-
use Doctrine\DBAL\DBALException;
15-
use Doctrine\DBAL\Driver\ResultStatement;
12+
use Doctrine\DBAL\{DBALException, Exception};
1613
use Doctrine\DBAL\DriverManager;
1714
use Doctrine\DBAL\Connection;
18-
use Doctrine\DBAL\Exception;
1915
use Doctrine\DBAL\Query\Expression\CompositeExpression;
2016
use Doctrine\DBAL\Schema\Schema;
2117
use Throwable;
2218

2319
/**
2420
* DBAL Adapter.
2521
*
26-
* @author techlee@qq.com
22+
* @author leeqvip@gmail.com
2723
*/
2824
class Adapter implements FilteredAdapter, BatchAdapter, UpdatableAdapter
2925
{
@@ -34,32 +30,32 @@ class Adapter implements FilteredAdapter, BatchAdapter, UpdatableAdapter
3430
*
3531
* @var Connection
3632
*/
37-
protected $connection;
33+
protected Connection $connection;
3834

3935
/**
4036
* Casbin policies table name.
4137
*
4238
* @var string
4339
*/
44-
public $policyTableName = 'casbin_rule';
40+
public string $policyTableName = 'casbin_rule';
4541

4642
/**
4743
* @var bool
4844
*/
49-
private $filtered = false;
45+
private bool $filtered = false;
5046

5147
/**
5248
* @var string[]
5349
*/
54-
protected $columns = ['p_type', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5'];
50+
protected array $columns = ['p_type', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5'];
5551

5652
/**
5753
* Adapter constructor.
5854
*
5955
* @param Connection|array $connection
6056
* @throws Exception
6157
*/
62-
public function __construct($connection)
58+
public function __construct(Connection|array $connection)
6359
{
6460
if ($connection instanceof Connection) {
6561
$this->connection = $connection;
@@ -85,7 +81,7 @@ public function __construct($connection)
8581
* @return Adapter
8682
* @throws Exception
8783
*/
88-
public static function newAdapter($connection): Adapter
84+
public static function newAdapter(Connection|array $connection): Adapter
8985
{
9086
return new static($connection);
9187
}
@@ -95,9 +91,9 @@ public static function newAdapter($connection): Adapter
9591
*
9692
* @return void
9793
*/
98-
public function initTable()
94+
public function initTable(): void
9995
{
100-
$sm = method_exists($this->connection, "createSchemaManager") ? $sm = $this->connection->createSchemaManager() : $sm = $this->connection->getSchemaManager();
96+
$sm = $this->connection->createSchemaManager();
10197
if (!$sm->tablesExist([$this->policyTableName])) {
10298
$schema = new Schema();
10399
$table = $schema->createTable($this->policyTableName);
@@ -118,10 +114,10 @@ public function initTable()
118114
* @param $pType
119115
* @param array $rule
120116
*
121-
* @return ResultStatement|int
117+
* @return int|string
122118
* @throws Exception
123119
*/
124-
public function savePolicyLine($pType, array $rule)
120+
public function savePolicyLine(string $pType, array $rule): int|string
125121
{
126122
$queryBuilder = $this->connection->createQueryBuilder();
127123
$queryBuilder
@@ -135,7 +131,7 @@ public function savePolicyLine($pType, array $rule)
135131
$queryBuilder->setValue('v' . strval($key), '?')->setParameter($key + 1, $value);
136132
}
137133

138-
return $this->executeQuery($queryBuilder);
134+
return $queryBuilder->executeStatement();
139135
}
140136

141137
/**
@@ -147,9 +143,9 @@ public function savePolicyLine($pType, array $rule)
147143
public function loadPolicy(Model $model): void
148144
{
149145
$queryBuilder = $this->connection->createQueryBuilder();
150-
$stmt = $this->executeQuery($queryBuilder->select('p_type', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5')->from($this->policyTableName));
146+
$stmt = $queryBuilder->select('p_type', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5')->from($this->policyTableName)->executeQuery();
151147

152-
while ($row = $this->fetch($stmt)) {
148+
while ($row = $stmt->fetchAssociative()) {
153149
$this->loadPolicyArray($this->filterRule($row), $model);
154150
}
155151
}
@@ -179,11 +175,9 @@ public function loadFilteredPolicy(Model $model, $filter): void
179175
throw new \Exception('invalid filter type');
180176
}
181177

182-
$stmt = $this->executeQuery($queryBuilder->from($this->policyTableName));
183-
while ($row = $this->fetch($stmt)) {
184-
$line = implode(', ', array_filter($row, function ($val) {
185-
return '' != $val && !is_null($val);
186-
}));
178+
$stmt = $queryBuilder->from($this->policyTableName)->executeQuery();
179+
while ($row = $stmt->fetchAssociative()) {
180+
$line = implode(', ', array_filter($row, static fn ($val): bool => '' != $val && !is_null($val)));
187181
$this->loadPolicyLine(trim($line), $model);
188182
}
189183

@@ -247,9 +241,7 @@ public function addPolicies(string $sec, string $ptype, array $rules): void
247241
$sets[] = array_pad([], $columnsCount, '?');
248242
}
249243

250-
$valuesStr = implode(', ', array_map(function ($set) {
251-
return '(' . implode(', ', $set) . ')';
252-
}, $sets));
244+
$valuesStr = implode(', ', array_map(static fn ($set): string => '(' . implode(', ', $set) . ')', $sets));
253245

254246
$sql = 'INSERT INTO ' . $table . ' (' . implode(', ', $columns) . ')' .
255247
' VALUES' . $valuesStr;
@@ -274,7 +266,7 @@ private function _removePolicy(Connection $conn, string $sec, string $ptype, arr
274266
$queryBuilder->andWhere('v' . strval($key) . ' = ?')->setParameter($key + 1, $value);
275267
}
276268

277-
$this->executeQuery($queryBuilder->delete($this->policyTableName));
269+
$queryBuilder->delete($this->policyTableName)->executeStatement();
278270
}
279271

280272
/**
@@ -331,13 +323,13 @@ public function _removeFilteredPolicy(string $sec, string $ptype, int $fieldInde
331323
$fieldIndex++;
332324
}
333325

334-
$stmt = $this->executeQuery($queryBuilder->select(...$this->columns)->from($this->policyTableName));
326+
$stmt = $queryBuilder->select(...$this->columns)->from($this->policyTableName)->executeQuery();
335327

336-
while ($row = $this->fetch($stmt)) {
328+
while ($row = $stmt->fetchAssociative()) {
337329
$removedRules[] = $this->filterRule($row);
338330
}
339331

340-
$this->executeQuery($queryBuilder->delete($this->policyTableName));
332+
$queryBuilder->delete($this->policyTableName)->executeStatement();
341333
});
342334

343335
return $removedRules;
@@ -381,9 +373,7 @@ public function updatePolicy(string $sec, string $ptype, array $oldRule, array $
381373
$queryBuilder->set('v' . strval($key), ':' . $placeholder)->setParameter($placeholder, $value);
382374
}
383375

384-
$queryBuilder->update($this->policyTableName);
385-
386-
$this->executeQuery($queryBuilder);
376+
$queryBuilder->update($this->policyTableName)->executeStatement();
387377
}
388378

389379
/**
@@ -484,33 +474,4 @@ public function getColumns(): array
484474
{
485475
return $this->columns;
486476
}
487-
488-
/**
489-
* @param \Doctrine\DBAL\Result|\Doctrine\DBAL\Driver\PDOStatement $stmt
490-
*
491-
* @return mixed
492-
* @throws Exception
493-
*/
494-
private function fetch($stmt)
495-
{
496-
if (method_exists($stmt, 'fetchAssociative')) {
497-
return $stmt->fetchAssociative();
498-
}
499-
500-
return $stmt->fetch();
501-
}
502-
503-
/**
504-
* Calls correct query execution method depending on Doctrine version and
505-
* returns the result.
506-
*
507-
* @param \Doctrine\DBAL\Query\QueryBuilder $query
508-
*
509-
* @return mixed
510-
*/
511-
private function executeQuery($query)
512-
{
513-
return method_exists($query, "executeQuery") ? $query->executeQuery() : $query->execute();
514-
}
515-
516477
}

src/Filter.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@
77
/**
88
* Class Filter
99
*
10-
* @author techlee@qq.com
10+
* @author leeqvip@gmail.com
1111
*/
1212
class Filter
1313
{
1414
/**
1515
* @var string
1616
*/
17-
private $predicates = "";
17+
private string $predicates = '';
1818

1919
/**
2020
* @var array<int, mixed>|array<string, mixed>
2121
*/
22-
private $params = "";
22+
private array $params = [];
2323

2424
/**
2525
* Filter constructor.

tests/AdapterFeatureTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
use CasbinAdapter\DBAL\Adapter as DatabaseAdapter;
66
use CasbinAdapter\DBAL\Filter;
7-
use Doctrine\DBAL\Query\Expression\CompositeExpression;
87
use Doctrine\DBAL\Query\QueryBuilder;
98

109
class AdapterFeatureTest extends TestCase

tests/TestCase.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected function initDb(DatabaseAdapter $adapter)
3333
$conn = $adapter->getConnection();
3434
$queryBuilder = $conn->createQueryBuilder();
3535
$query = $queryBuilder->delete($tableName)->where('1 = 1');
36-
method_exists($query, "executeQuery") ? $query->executeQuery() : $query->execute();
36+
$query->executeStatement();
3737

3838
$data = [
3939
['p_type' => 'p', 'v0' => 'alice', 'v1' => 'data1', 'v2' => 'read'],
@@ -44,7 +44,7 @@ protected function initDb(DatabaseAdapter $adapter)
4444
];
4545
foreach ($data as $row) {
4646
$query = $queryBuilder->insert($tableName)->values(array_combine(array_keys($row), array_fill(0, count($row), '?')))->setParameters(array_values($row));
47-
method_exists($query, "executeQuery") ? $query->executeQuery() : $query->execute();
47+
$query->executeStatement();
4848
}
4949
}
5050

0 commit comments

Comments
 (0)