diff --git a/public/sample/php/components/footer.html b/public/sample/php/components/footer.html
new file mode 100644
index 0000000..4bf683b
--- /dev/null
+++ b/public/sample/php/components/footer.html
@@ -0,0 +1,3 @@
+
diff --git a/public/sample/php/components/header.html b/public/sample/php/components/header.html
new file mode 100644
index 0000000..f19aaa6
--- /dev/null
+++ b/public/sample/php/components/header.html
@@ -0,0 +1,3 @@
+
diff --git a/public/sample/php/include.php b/public/sample/php/include.php
new file mode 100644
index 0000000..32c22b2
--- /dev/null
+++ b/public/sample/php/include.php
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+ ファイルを読み込む
+
+
+
+
+
+
+ メインコンテンツ
+
+
+
+
+
+
+
+
diff --git a/public/sample/php/lib/varout.php b/public/sample/php/lib/varout.php
new file mode 100644
index 0000000..9e0b109
--- /dev/null
+++ b/public/sample/php/lib/varout.php
@@ -0,0 +1,8 @@
+';
+ var_dump($var);
+ echo '';
+}
diff --git a/src/components/OuterLink.astro b/src/components/OuterLink.astro
new file mode 100644
index 0000000..553d3ef
--- /dev/null
+++ b/src/components/OuterLink.astro
@@ -0,0 +1,11 @@
+---
+interface Props {
+ href: string;
+ title?: string;
+}
+
+const { href } = Astro.props as Props;
+---
+
+ {Astro.props.title ?? href}
+
diff --git a/src/pages/drafts/template.mdx b/src/pages/drafts/template.mdx
new file mode 100644
index 0000000..d01850c
--- /dev/null
+++ b/src/pages/drafts/template.mdx
@@ -0,0 +1,9 @@
+---
+layout: "@/layouts/MarkdownLayout.astro"
+---
+
+export const title = "準備中";
+
+# {title}
+
+このセクションはまだ何も書かれていません。
diff --git a/src/pages/php/010-foundation.mdx b/src/pages/php/010-foundation.mdx
index f00abfc..a8e4550 100644
--- a/src/pages/php/010-foundation.mdx
+++ b/src/pages/php/010-foundation.mdx
@@ -3,6 +3,7 @@
---
import Toc from "../../components/Toc.astro";
+import DockerLink from "@/components/DockerLink.astro";
export const title = "PHPとJavaScriptを比較";
@@ -152,3 +153,124 @@
}
// name: Bob
age: 25
と表示される
```
+
+## require / includeによるファイルの読み込み
+
+
+
+```php file=public/sample/php/include.php "include" "require" "include_once" "require_once"
+public/sample/php/include.php
+```
+
+
+
+
+呼ばれているファイルの内容を見る
+
+```html file=public/sample/php/components/header.html
+public/sample/php/components/header.html
+```
+
+
+
+```html file=public/sample/php/components/footer.html
+public/sample/php/components/footer.html
+```
+
+
+
+```php file=public/sample/php/lib/varout.php
+public/sample/php/lib/varout.php
+```
+
+
+
+phpでは、以下の4つの命令が用意されています。
+
+- `require`
+- `include`
+- `require_once`
+- `include_once`
+
+これらは細かい動作の違いはありますが、他のファイルの内容を読み込むための命令です。
+イメージは、その箇所に対象のファイルの中身をそのままコピー&ペーストしたように解釈されます。
+
+具体的には、例に挙げた`include.php`は以下のように解釈されます。
+これを改めてphpが実行するときに、その内容を以下のように解釈して実行します。
+
+```php title="include.php (解釈後)" del={2,20,31} add={3-8,21-23,32-34}
+';
+ var_dump($var);
+ echo '';
+}
+?>
+
+
+
+
+
+
+ ファイルを読み込む
+
+
+
+
+
+
+
+ メインコンテンツ
+
+
+
+
+
+
+
+
+
+```
+
+
+
+`require`と`include`の違いは、読み込むファイルが存在しない場合の挙動です。
+
+`include`は警告を出して処理を続行しますが、`require`はファイルがないことを致命的なエラーとして処理を中断します。
+
+また、`_once`が付くものは、同じファイルを複数回読み込むことを防ぎます。
+
+例えば自作で便利な関数をまとめたファイルを作成していて、それを様々な箇所で利用するとします。
+しかしその関数自体は1回だけ読み込めば良いものです。
+そのような場合に`require_once`や`include_once`を使うことで、2回目以降の読み込みを無視してくれます。
+
+```php
+
+これは1回目の読み込みだけが実行され、2回目以降は無視されます。
+
+```php
+';
+ var_dump($var);
+ echo '';
+}
+
+varout("Hello, World!");
+```
diff --git a/src/pages/sql/010-foundation.mdx b/src/pages/sql/010-foundation.mdx
new file mode 100644
index 0000000..916befb
--- /dev/null
+++ b/src/pages/sql/010-foundation.mdx
@@ -0,0 +1,9 @@
+---
+layout: "@/layouts/MarkdownLayout.astro"
+---
+
+export const title = "SQLの基本";
+
+# {title}
+
+このセクションはまだ何も書かれていません。
diff --git a/src/pages/sql/030-sql-on-php.mdx b/src/pages/sql/030-sql-on-php.mdx
new file mode 100644
index 0000000..4b93930
--- /dev/null
+++ b/src/pages/sql/030-sql-on-php.mdx
@@ -0,0 +1,18 @@
+---
+layout: "@/layouts/MarkdownLayout.astro"
+---
+
+export const title = "PHPでSQLを操作する";
+
+import OuterLink from "@/components/OuterLink.astro";
+
+# {title}
+
+このセクションはまだ何も書かれていません。
+
+## 参考リンク
+
+