サイト作成の勉強中です。
ある程度HTML,CSS,JS,PHPを学びいろいろ作っていこうとしています。
ある機能を作ったのですが、名前空間のことで悩んでいます。
定数などを定義したconfig.phpを用意しました。
config.php
1<?php 2 3session_start(); 4 5define('DSN', 'mysql:host=127.0.0.1;dbname=drh;charset=utf8mb4'); 6define('DB_USER', 'root'); 7define('DB_PASS', 'I5kBVg94HW0d'); 8define('SITE_URL', 'http://' . $_SERVER['HTTP_HOST']); 9define('BUNDLE_URL', 'http://' . $_SERVER['HTTP_HOST'] . "/bundle"); 10 11spl_autoload_register(function ($class) { 12 13 $prefix = 'MyApp\\'; 14 15 if (strpos($class, $prefix) === 0) { 16 $fileName = sprintf(__DIR__ . '/%s.php', substr($class, strlen($prefix))); 17 if (file_exists($fileName)) { 18 require($fileName); 19 } else { 20 echo 'File not found: ' . $fileName; 21 exit; 22 } 23 } 24});
片方で共通関数を作成しました。
Utils.php
1<?php 2 3namespace MyApp; 4 5class Utils 6{ 7 public static function h($str) 8 { 9 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 10 } 11}
Database.php
1<?php 2 3namespace MyApp; 4 5class Database 6{ 7 private static $instance; 8 9 public static function getInstance() 10 { 11 try { 12 if (!isset(self::$instance)){ 13 self::$instance = new \PDO( 14 DSN, 15 DB_USER, 16 DB_PASS, 17 [ 18 \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, 19 \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ, 20 \PDO::ATTR_EMULATE_PREPARES => false, 21 ] 22 ); 23 } 24 return self::$instance; 25 } catch (\PDOException $e){ 26 echo $e->getMessage(); 27 exit; 28 } 29 } 30}
config.phpのspl_autoload_registerに名前空間を限定する箇所があります。
別機能を作成しようとしたとき、名前空間を分けると、共通関数なども別名前空間で作成しなくてはならず、冗長だと思います。
同じ名前空間だと、元々の機能も読み込むことになり、これも冗長になると思います。
みなさんは、どのように名前空間の使い分けをしていらっしゃるのでしょうか?
回答1件
あなたの回答
tips
プレビュー