Complex classes like AuthDb often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use AuthDb, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
21 | class AuthDb implements \Risoluto\AuthProviderInterface |
||
22 | { |
||
23 | //------------------------------------------------------// |
||
24 | // クラスメソッド定義 |
||
25 | //------------------------------------------------------// |
||
26 | /** |
||
27 | * getSqlInitUserTbl() |
||
28 | * |
||
29 | * ユーザ情報テーブル初期化のためのSQLを生成する |
||
30 | * |
||
31 | * @access private |
||
32 | * |
||
33 | * @param string $tablename ユーザ情報テーブル名 |
||
34 | * |
||
35 | * @return SQL |
||
36 | */ |
||
37 | private function getSqlInitUserTbl( $tablename ) |
||
85 | |||
86 | /** |
||
87 | * getSqlInitGroupTbl() |
||
88 | * |
||
89 | * グループ情報テーブル初期化のためのSQLを生成する |
||
90 | * |
||
91 | * @access private |
||
92 | * |
||
93 | * @param string $tablename グループ情報テーブル名 |
||
94 | * |
||
95 | * @return SQL |
||
96 | */ |
||
97 | private function getSqlInitGroupTbl( $tablename ) |
||
139 | |||
140 | /** |
||
141 | * getSqlAddUser() |
||
142 | * |
||
143 | * ユーザ追加のためのSQLを生成する |
||
144 | * |
||
145 | * @access private |
||
146 | * |
||
147 | * @param string $tablename ユーザ情報テーブル名 |
||
148 | * |
||
149 | * @return SQL |
||
150 | */ |
||
151 | private function getSqlAddUser( $tablename ) |
||
179 | |||
180 | |||
181 | /** |
||
182 | * getSqlAddGroup() |
||
183 | * |
||
184 | * グループ追加のためのSQLを生成する |
||
185 | * |
||
186 | * @access private |
||
187 | * |
||
188 | * @param string $tablename ユーザ情報テーブル名 |
||
189 | * |
||
190 | * @return SQL |
||
191 | */ |
||
192 | private function getSqlAddGroup( $tablename ) |
||
216 | |||
217 | /** |
||
218 | * getSqlModUser() |
||
219 | * |
||
220 | * ユーザ情報変更のためのSQLを生成する |
||
221 | * |
||
222 | * @access private |
||
223 | * |
||
224 | * @param string $tablename ユーザ情報テーブル名 |
||
225 | * |
||
226 | * @return SQL |
||
227 | */ |
||
228 | private function getSqlModUser( $tablename ) |
||
243 | |||
244 | /** |
||
245 | * getSqlModGroup() |
||
246 | * |
||
247 | * グループ情報変更のためのSQLを生成する |
||
248 | * |
||
249 | * @access private |
||
250 | * |
||
251 | * @param string $tablename ユーザ情報テーブル名 |
||
252 | * |
||
253 | * @return 初期化用SQL |
||
254 | */ |
||
255 | private function getSqlModGroup( $tablename ) |
||
268 | |||
269 | /** |
||
270 | * getSqlModUserByNo() |
||
271 | * |
||
272 | * ユーザ情報変更のためのSQLを生成する(Noでの更新用) |
||
273 | * |
||
274 | * @access private |
||
275 | * |
||
276 | * @param string $tablename ユーザ情報テーブル名 |
||
277 | * |
||
278 | * @return SQL |
||
279 | */ |
||
280 | private function getSqlModUserByNo( $tablename ) |
||
296 | |||
297 | /** |
||
298 | * getSqlModGroupByNo() |
||
299 | * |
||
300 | * グループ情報変更のためのSQLを生成する(Noでの更新用) |
||
301 | * |
||
302 | * @access private |
||
303 | * |
||
304 | * @param string $tablename ユーザ情報テーブル名 |
||
305 | * |
||
306 | * @return 初期化用SQL |
||
307 | */ |
||
308 | private function getSqlModGroupByNo( $tablename ) |
||
322 | |||
323 | /** |
||
324 | * getSqlDelUser() |
||
325 | * |
||
326 | * ユーザ情報削除のためのSQLを生成する |
||
327 | * |
||
328 | * @access private |
||
329 | * |
||
330 | * @param string $tablename ユーザ情報テーブル名 |
||
331 | * |
||
332 | * @return 初期化用SQL |
||
333 | */ |
||
334 | private function getSqlDelUser( $tablename ) |
||
343 | |||
344 | /** |
||
345 | * getSqlDelGroup() |
||
346 | * |
||
347 | * グループ情報削除のためのSQLを生成する(Noでの削除用) |
||
348 | * |
||
349 | * @access private |
||
350 | * |
||
351 | * @param string $tablename ユーザ情報テーブル名 |
||
352 | * |
||
353 | * @return 初期化用SQL |
||
354 | */ |
||
355 | private function getSqlDelGroup( $tablename ) |
||
364 | |||
365 | /** |
||
366 | * getSqlDelUserGroupByNo() |
||
367 | * |
||
368 | * ユーザ/グループ情報削除のためのSQLを生成する(Noでの削除用) |
||
369 | * |
||
370 | * @access private |
||
371 | * |
||
372 | * @param string $tablename ユーザ情報テーブル名 |
||
373 | * |
||
374 | * @return 初期化用SQL |
||
375 | */ |
||
376 | private function getSqlDelUserGroupByNo( $tablename ) |
||
385 | |||
386 | /** |
||
387 | * getSqlShowUserAll() |
||
388 | * |
||
389 | * ユーザ情報表示のためのSQLを生成する |
||
390 | * |
||
391 | * @access private |
||
392 | * |
||
393 | * @param string $tablename ユーザ情報テーブル名 |
||
394 | * |
||
395 | * @return SQL |
||
396 | */ |
||
397 | private function getSqlShowUserAll( $tablename ) |
||
416 | |||
417 | /** |
||
418 | * getSqlShowGroupAll() |
||
419 | * |
||
420 | * グループ情報表示のためのSQLを生成する |
||
421 | * |
||
422 | * @access private |
||
423 | * |
||
424 | * @param string $tablename グループ情報テーブル名 |
||
425 | * |
||
426 | * @return SQL |
||
427 | */ |
||
428 | private function getSqlShowGroupAll( $tablename ) |
||
445 | |||
446 | /** |
||
447 | * getSqlShowUser() |
||
448 | * |
||
449 | * ユーザ情報表示のためのSQLを生成する |
||
450 | * |
||
451 | * @access private |
||
452 | * |
||
453 | * @param string $tablename ユーザ情報テーブル名 |
||
454 | * |
||
455 | * @return SQL |
||
456 | */ |
||
457 | private function getSqlShowUser( $tablename ) |
||
477 | |||
478 | /** |
||
479 | * getSqlShowGroup() |
||
480 | * |
||
481 | * グループ情報表示のためのSQLを生成する |
||
482 | * |
||
483 | * @access private |
||
484 | * |
||
485 | * @param string $tablename グループ情報テーブル名 |
||
486 | * |
||
487 | * @return SQL |
||
488 | */ |
||
489 | private function getSqlShowGroup( $tablename ) |
||
507 | |||
508 | /** |
||
509 | * getSqlShowUserByNo() |
||
510 | * |
||
511 | * Noでのユーザ情報表示のためのSQLを生成する |
||
512 | * |
||
513 | * @access private |
||
514 | * |
||
515 | * @param string $tablename グループ情報テーブル名 |
||
516 | * |
||
517 | * @return SQL |
||
518 | */ |
||
519 | private function getSqlShowUserByNo( $tablename ) |
||
539 | |||
540 | /** |
||
541 | * getSqlShowGroupByNo() |
||
542 | * |
||
543 | * noでのグループ情報表示のためのSQLを生成する |
||
544 | * |
||
545 | * @access private |
||
546 | * |
||
547 | * @param string $tablename グループ情報テーブル名 |
||
548 | * |
||
549 | * @return SQL |
||
550 | */ |
||
551 | private function getSqlShowGroupByNo( $tablename ) |
||
569 | |||
570 | /** |
||
571 | * getParams() |
||
572 | * |
||
573 | * DBアクセス用のパラメタ情報を取得する |
||
574 | * |
||
575 | * @access private |
||
576 | * |
||
577 | * @param string $type 識別子 |
||
578 | * @param string $option オプション情報 |
||
579 | * |
||
580 | * @return array パラメタ情報が格納された配列 |
||
581 | */ |
||
582 | private function getParams( $type, $option ) |
||
692 | |||
693 | /** |
||
694 | * getInfoFromConf() |
||
695 | * |
||
696 | * コンフィグから認証情報ファイルの情報を取得する |
||
697 | * |
||
698 | * @access private |
||
699 | * |
||
700 | * @param void |
||
701 | * |
||
702 | * @return array 認証情報ファイルの情報 |
||
703 | */ |
||
704 | private function getInfoFromConf() |
||
721 | |||
722 | /** |
||
723 | * init() |
||
724 | * |
||
725 | * 認証情報保持テーブルの初期化を行う |
||
726 | * |
||
727 | * @access public |
||
728 | * |
||
729 | * @param void |
||
730 | * |
||
731 | * @return boolean true:成功/false:失敗 |
||
732 | */ |
||
733 | public function init() |
||
760 | |||
761 | /** |
||
762 | * doAuth($user, $pass, array $option = []) |
||
763 | * |
||
764 | * 認証を行う |
||
765 | * |
||
766 | * @access public |
||
767 | * |
||
768 | * @param string $user ユーザID |
||
769 | * @param string $pass パスワード |
||
770 | * @param array $option オプション情報(省略可) |
||
771 | * |
||
772 | * @return boolean true:認証成功/false:認証失敗 |
||
773 | */ |
||
774 | public function doAuth( $user, $pass, array $option = [ ] ) |
||
793 | |||
794 | /** |
||
795 | * doOperation(array $option = []) |
||
796 | * |
||
797 | * 認証情報操作に関する処理を行う |
||
798 | * |
||
799 | * @access public |
||
800 | * |
||
801 | * @param string $operation オペレーション識別子(addUser/addGroup/modUser/modGroup/delUser/delGroup/showUser/showGroup/showUserAll/showGroupAll) |
||
802 | * @param array $option オプション情報(省略可) |
||
803 | * |
||
804 | * @return mixed trueまたは取得内容:成功/false:失敗 |
||
805 | */ |
||
806 | public function doOperation( $operation, array $option = [ ] ) |
||
931 | } |
||
932 |
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: