You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

89 lines
2.1 KiB

8 months ago
  1. <?php
  2. namespace app\commands;
  3. use yii\console\Controller;
  4. class PhonebookController extends Controller
  5. {
  6. // 读取和保存文件
  7. private function loadContacts()
  8. {
  9. $file = '/opt/phonebook/data/contract.json';
  10. if (!file_exists($file)) {
  11. return [];
  12. }
  13. return json_decode(file_get_contents($file), true);
  14. }
  15. private function saveContacts($contacts)
  16. {
  17. file_put_contents('/opt/phonebook/data/contract.json', json_encode($contacts, JSON_PRETTY_PRINT));
  18. }
  19. //增添联系人 (actionAdd)
  20. public function actionAdd($name, $phone)
  21. {
  22. $contacts = $this->loadContacts();
  23. $contacts[] = ['id' => count($contacts) + 1, 'name' => $name, 'phone' => $phone];
  24. $this->saveContacts($contacts);
  25. echo "Contact added successfully.\n";
  26. }
  27. //搜索联系人 (actionSearch)
  28. public function actionSearch($name)
  29. {
  30. $contacts = $this->loadContacts();
  31. $found = array_filter($contacts, function ($contact) use ($name) {
  32. return strpos(strtolower($contact['name']), strtolower($name)) !== false;
  33. });
  34. if (empty($found)) {
  35. echo "No contacts found.\n";
  36. return;
  37. }
  38. foreach ($found as $contact) {
  39. echo "ID: {$contact['id']}, Name: {$contact['name']}, Phone: {$contact['phone']}\n";
  40. }
  41. }
  42. //删除联系人 (actionDelete)
  43. public function actionDelete($id)
  44. {
  45. $contacts = $this->loadContacts();
  46. foreach ($contacts as $i => $contact) {
  47. if ($contact['id'] == $id) {
  48. array_splice($contacts, $i, 1);
  49. $this->saveContacts($contacts);
  50. echo "Contact deleted successfully.\n";
  51. return;
  52. }
  53. }
  54. echo "Contact not found.\n";
  55. }
  56. //修改联系人 (actionUpdate)
  57. public function actionUpdate($id, $name, $phone)
  58. {
  59. $contacts = $this->loadContacts();
  60. foreach ($contacts as &$contact) {
  61. if ($contact['id'] == $id) {
  62. $contact['name'] = $name;
  63. $contact['phone'] = $phone;
  64. $this->saveContacts($contacts);
  65. echo "Contact updated successfully.\n";
  66. return;
  67. }
  68. }
  69. echo "Contact not found.\n";
  70. }
  71. }
  72. ?>