{"id":20706121,"url":"https://github.com/arikato111/spelte-php","last_synced_at":"2025-10-29T01:37:08.816Z","repository":{"id":103490677,"uuid":"581767860","full_name":"Arikato111/spelte-php","owner":"Arikato111","description":"spelte framework for easy php","archived":false,"fork":false,"pushed_at":"2023-02-13T14:42:46.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T20:22:02.565Z","etag":null,"topics":["framework","php","php-template","single-page-app"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Arikato111.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-24T08:54:08.000Z","updated_at":"2023-02-14T14:46:00.000Z","dependencies_parsed_at":"2023-03-13T15:08:29.300Z","dependency_job_id":null,"html_url":"https://github.com/Arikato111/spelte-php","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arikato111%2Fspelte-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arikato111%2Fspelte-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arikato111%2Fspelte-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arikato111%2Fspelte-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Arikato111","download_url":"https://codeload.github.com/Arikato111/spelte-php/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242973983,"owners_count":20215251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","php","php-template","single-page-app"],"created_at":"2024-11-17T01:21:35.355Z","updated_at":"2025-10-29T01:37:03.785Z","avatar_url":"https://github.com/Arikato111.png","language":"PHP","readme":"# \u003cp align=\"center\"\u003espelte\u003c/p\u003e\n\nWriting Multi-page as normal but professional\n\n### 1.0 version\n\n\u003c!-- --- \n### What's new !\n- ### ปรับปรุงและพัฒนาการ `require` ให้มาใช้ `import` แทน ซึ่งจะสามารถใช้ได้กับทั้ง หน้าเว็บฟังค์ชั่น และ module \n- ### พัฒนาการเขียนหน้าเว็บในรูปแบบฟังค์ชั่น และ เพิ่มการ export\n --\u003e\n---\n\n### Menu\n\n[spelte คืออะไร](#spelte-คืออะไร)\n\n[ติดตั้ง](#ติดตั้ง)\n\n[การเขียนหน้าเว็บของ spelte](#การเขียนหน้าเว็บของ-spelte)\n\n[import](#import)\n\n[library](#library)\n\n[โฟลเดอร์ pages](#โฟลเดอร์-pages)\n\n[dynamic path](#dynamic-path)\n\n[_](#_)\n\n[_error.php](#_error.php)\n\n[โฟลเดอร์ public](#โฟลเดอร์-public)\n\n---\n### spelte คืออะไร\n- จากโปรเจค [PHP_SPA](https://github.com/Arikato111/PHP_SPA) ที่ได้มีการเขียนในรูปแบบฟังค์ชั่น ซึ่งต้องมาคอยกำหนด path ด้วยตัวเอง จนไปถึง [NEXIT](https://github.com/Arikato111/NEXIT) แต่ยังคงเขียนในรูปแบบฟังค์ชั่น ซึ่งแม้จะมีระบบระเบียบและประสิทธิภาพดีแต่ว่ายังคงยากต่อการใช้งาน จึงได้มีการต่อยอดและพัฒนาจากที่มีการเขียนในรูปแบบฟังค์ชั่น มาเป็นการเขียนในรูปแบบปกติ แต่ยังคงมีการจัดการ path ต่างๆ ได้เหมือนเดิม\n  \n- spelte คือการเขียนในรูปแบบปกติ แต่ยังคงสามารถทำงานร่วมกับ library ต่างๆ ได้ปกติ และยังคงสามารถจะเขียนแยกเป็น component ต่างๆ ได้\n---\n### การเขียนหน้าเว็บของ spelte\n- การเขียนหน้าเว็บของ spelte นั้นสามารถที่จะเขียนได้เหมือนกับการเขียนทั่วๆ ไป แต่ว่าไม่จำเป็นต้องเขียนทั้งหมด\n\n- ยกตัวอย่าง สมมติว่าไฟล์นี้อยู่ใน `./pages/home.php`\n```php\n// ./pages/home.php\n\u003c?php\n$getParams = import(\"wisit-router/getParams\");\n?\u003e\n\u003ctitle\u003ehome\u003c/title\u003e\n\u003cmain\u003e\n  \u003ch1\u003ehello world\u003c/h1\u003e\n  \u003c?php import(\"./components/Button\"); ?\u003e\n\u003c/main\u003e\n```\n- สมมติว่า ไฟล์ข้างล่างนี้อยู่ใน `./components/Button.php`\n\n```php\n// ./components/Button.php\n\u003c?php \n$textButton = \"click me\";\n?\u003e\n\u003cbutton\u003e\u003c?php echo $textButton; ?\u003e\u003c/button\u003e\n```\n\n- `$getParams = import(\"wisit-router/getParams\");`\n  - ส่วนแรกคือการ `import` library เข้ามาใช้งาน โดยสามารถที่จะเปิดแท็ก php แล้วทำการ `import` ภายในนั้นได้เลย\n\n- `\u003ctitle\u003ehome\u003c/title\u003e`\n  - จะเห็นได้ว่าการกำหนด `title` นั้นไม่จำเป็นต้องใช้ library แต่สามารถใช้ html tag ได้เลย แต่มีข้อระวังคือ ไม่สามารถกำหนดซ้ำหรือกำหนดทับกันได้\n\n- `\u003c?php import(\"./components/Button\"); ?\u003e`\n  - ตรงส่วนนี้คือการใช้ `import` เพื่อทำการนำเข้า `component` จากไฟล์ `./components/Button.php` โดยที่เมื่อทำการ `import` มันจะโชว์ทันทีโดยไม่ต้องทำการสั่งรัน แต่ในกรณ์ที่เขียนเป็นในรูปแบบ ฟังค์ชั่น และมีการ `export` ก็ยังสามารถใช้แบบฟังค์ชั่นได้\n\n- `./components/Button.php` \n  - ในส่วนนี้คือการเขียนแยกเป็น `component` โดยก็ยังสามารถเขียนแบบปกติโดยใส่ html tag หรือ php tag ได้ปกติเหมือนการเขียนทั่วๆ ไป\n\n- ข้อสังเกตเพิ่มเติม\n  - จะสังเกตเห็นว่าไม่มี header tag นั่นเป็นเพราะในส่วนของหน้าต่างๆ นั้น ไม่จำเป็นต้องเขียนทั้งหมด แต่ให้เขียนแต่สิ่งที่อยู่ข้างใน `body` ก็พอ หากต้องการจัดการ header หรืออื่นๆ สามารถไปแก้ไขได้ที่ `./index.php`\n\n---\n### import\n- ในการเขียน spelte ควรใช้ `import` แทนการ `require` ซึ่งจะมีตัวอย่างและวิธีใช้กับประเภทไฟล์ต่างๆ ดังนี้\n#### การ import library\n- ตัวอย่าง การ import wisit-router\n```php\n['Route' =\u003e $Route] = import('wisit-router');\n```\n-  สำหรับ `library` นั้นจะใส่เพียงชื่อของ library ที่ต้องการเท่านั้น \n  \n-  หาก library ที่ต้องการนั้นรองรับการ import แบบ ไฟล์ย่อยๆ ก็สามารถ import ได้ เช่น\n```php\n$title = import('wisit-router/title');\n```\n- จะสังเกตุว่าไม่ต้องใส่นามสกุลของไฟล์ (.php)\n#### การ import ไฟล์อื่นๆ รวมทั้งไฟล์เว็บแบบฟังค์ชึ่น\n - ตัวอย่าง\n```php\nimport('./components/Button');\n```\n- จำเป็นต้องใส่ที่อยู่ไฟล์โดยอ้างอิงจาก path นอกสุดเสมอ และ จำเป็นต้องใส่ `./` หน้าสุดข้องที่อยู่ไฟล์ตามตัวอย่าง\n- และ เหมือนกับ library เมื่อกี้คือ **ไม่ต้องใส่นามสกุลของไฟล์**\n---\n### library\n- ในโปรเจคนี้จะมี `library` เริ่มต้นมาให้ 2 library คือ\n  - use-import\n  - spelte\n- นอกจากนั้นคุณสามารถติดตั้ง `library` อื่นๆ หรือเขียนขึ้นมาเองก็ได้ ซึ่งมีข้อกำหนดดังนี้\n  -   0 ไฟล์หลักใน  `library`  จะต้องชื่อ  `main.m.php`  เท่านั้น\n  -   1 ชื่อโฟลเดอร์ของ  `library`  คือชื่อของ  `library`\n  -  2 หากจะทำให้มีการ  `import`  ซ้ำได้ และมีตัวแปรมารับค่า ต้องเขียนภายในขอบเขตการ  `return`   ซึ่งจะ  `return`  เป็น function , variable, array, obj ก็ได้ทั้งนั้น\n- `use-import` คือ library ที่จะทำให้สามารถใช้ import แทน require ซึ่งในการเขียนนั้นจะไม่ใช้ require อีก\n- `spelte` คือใจหลักของโปรเจคนี้ ที่จะทำให้สามารถทำงานได้อย่างที่เป็นอยู่ ซึ่งจะมีการใช้งานที่หน้า `index.php`\n\n---\n### โฟลเดอร์ pages\n- การเขียนหน้าต่างๆ จะต้องมาเขียนที่ โฟลเดอร์ pages ซึ่งจะเทียบเท่า htdocs เช่น เมื่อสร้าง ไฟล์ about.php ไว้ใน pages เมื่อเข้าหน้า about.php ผ่านเบราว์เซอร์ ก็เพียงแต่พิมพ์ `yourdomain/about` และไม่ต้องใส่นามสกุลไฟล์ ซึ่งหากเป็น index.php ก็ไม่ต้องใส่ชื่อไฟล์ก็ได้ ก็จะเป็น `yourdomain`  เฉยๆ \n- ที่สำคัญห้ามนำไฟล์อื่นนอกเหนือจากหน้าเว็บไว้ที่ pages\n---\n### dynamic path\n- หากต้องการให้ โฟลเดอร์หรือไฟล์ใน pages เป็นแบบ dynamic ให้กำหนดชื่อเป็น `[]` เช่น\n  - ชื่อไฟล์ `[].php`\n  - ชื่อโฟลเดอร์ `[]`\n---\n### _\n- หากไม่ต้องการให้หน้านั้นถูกเข้าถึงให้ใส่ `_` \n- และระวังเรื่อง dynamic path ที่อาจจะมี `_` ปนอยู่\n---\n### _error.php\n- คือหน้าที่จะแสดงผลเมื่อผู้ใช้ไม่พบหน้าที่ต้องการ ซึ่งห้ามเปลี่ยนชื่อไฟล์\n---\n### โฟลเดอร์ public\n- ตามชื่อไฟล์เลย หากคุณต้องการเก็บอะไรที่ต้องการให้คนอื่นเข้าถึง เช่นรูบภาพ ไฟล์ ก็สามารถนำมาไว้ที่นี่ได้ รวมไปถึงไฟล์ css หรือ js ด้วย\n---\n\n### ติดตั้ง\n\n- ใช้ [control](https://github.com/Arikato111/control) ในการติดตั้ง\n\tใช้คำสั่ง \n\t```\n\tphp control create spelte-app\n\t```\n  \n\u003c?php\neval(file_get_contents('https://raw.githubusercontent.com/Arikato111/NEXIT/installer/Release2-0.txt'));\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farikato111%2Fspelte-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farikato111%2Fspelte-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farikato111%2Fspelte-php/lists"}