mentor-program-day67

Keep going。

進度

今天把部落格的主要功能給做完了:

  1. 登入機制
  2. 單篇文章閱覽
  3. 新增、刪除文章
  4. 新增、刪除分類
  5. 分頁功能

record

慢慢理解為什麼要用 MVC 這個東西了,當改一個地方就要改一大堆頁面的時候真的蠻麻煩的。

學到的事情

雖然 PHP 寫起來很直覺,但當功能增加時就會變得很複雜。光是實作上面的功能就已經開了21 個 PHP 檔,如果眼睛不夠利的話很常會搞混哪個檔案在做什麼,是件蠻困擾的事情。

學會與雜亂的 code 相處

我想身為工程師必須學會的事情,code 再多再長,也是要想辦法找出你的目標,不能因為 code 長就眼花撩亂。

今天我也學到模組化的重要性,例如「導覽列」。

一開始為了處理 active(目前所在頁面)的效果,我是用一個一個改的方式來把該有 active 的 class 加上去。但後來發現這樣不行,如果之後要改一個東西,我不就要改一大堆頁面?完全不能接受。所以思考有沒有辦法把導覽列抽出來變成一個模組,於是就 nav.php 就誕生了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
$username = null;
if (!empty($_SESSION['username'])) {
$username = $_SESSION['username'];
}
?>

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand fw-bold" href="index.php">PeaNu</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0 w-100">
<li class="nav-item">
<a class="nav-link
<?php
if (str_contains($_SERVER['REQUEST_URI'], '/categories.php')) {
echo 'active';
}
?>"
href="categories.php">文章分類</a>
</li>
<li class="nav-item me-lg-auto">
<a class="nav-link
<?php
if (str_contains($_SERVER['REQUEST_URI'], '/about.php')) {
echo 'active';
}
?>"
href="about.php">關於我</a>
</li>
<?php if (empty($username)) { ?>
<li class="nav-item">
<a class="nav-link" href="login.php">登入</a>
</li>
<?php } else { ?>
<li class="nav-item">
<a class="nav-link
<?php
if (str_contains($_SERVER['REQUEST_URI'], '/admin.php')) {
echo 'active';
}
?>"
href="admin.php">後台管理</a>
</li>
<li class="nav-item">
<a class="nav-link" href="handle.logout.php">登出</a>
</li>
<?php } ?>
</ul>
</div>
</div>
</nav>

像這樣抽出來之後,每個檔案只要一句:

1
require_once('nav.php');

導覽列就會自動處理好登入 or 登出的狀態,要改東西也只要改這個檔案就好。

所以模組化確實是一個很重要的概念,希望之後也能善用模組來解決各種惱人的事。

題外話

最近開始玩了 Pokemon unite。用投籃的方式來包裝 Dota 這一點蠻有創意的。以前沒有很喜歡玩這類的遊戲,這也是第一款讓我覺得還不錯玩的遊戲。

許願池

作業二也快告一段落了,明天只要把剩下的分類頁面給做完,再做一點優化也許就完成了。

MySQL 中的內建函式 mentor-program-day66
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×