その理由が知りたければ「あわせて読みたい」を参照すること。文字列になることを保証できる。あとは、HTTPレスポンスの中で、そのページをUTF-8として扱うようブラウザに指示する必要がある。いまどきなら、普通はHTTPレスポンスヘッダの中でこんなふうに設定するだろう。指定したりしていたものだ。何らかのマルチバイト関数で文字列を操作する。ここでは、デモの意味も込めて、非ASCII文字のところで文字列をカットしてみた。データベースに接続し、この文字列を格納する。サンプルを見れば、より詳しい情報がわかる。変換した文字列を、UTF-8としてデータベースに格納する。このオブジェクトがメモリを圧迫することはない。依存性の注入とはソフトウェアデザインパターンの1つである。依存関係をソースコードから排除して、実行時あるいはコンパイル時にその依存関係を変更できるようにする。ことだが、この説明は必要以上に小難しく言っているように思える。依存性の注入とはコンポーネントに依存関係を渡せる仕組みのことで、コンストラクタで注入したりメソッド呼び出しをしたりプロパティを設定したりといった方法がある。考えかたを説明するために、シンプルな例を示そう。細かいところは手を抜いているけどね。こいつがデータベースとやりとりするためには、何らかのアダプターが必要だ。そこで、コンストラクタの中でアダプターのインスタンスを作っている。アダプターの名前を直接指定してね。このクラスがアダプターと密接に結びついてしまう。{}このコードを書き換えて依存性の注入を使うようにすれば、この依存関係を緩やかにできる。クラスに渡せるようになった。このクラス自身に作らせる必要がなくなったんだ。プロパティを作って、依存関係を直接設定できるようにしてもいい。いった言葉に見覚えがあるだろう。これらは複雑な問題で、依存性の注入によって解決できるものだ。制御の反転とは、文字通り、システムの「制御を反転」することだ。システム全体の制御を、オブジェクトから切り離したままで行う。依存性の注入の文脈では、依存関係の制御や作成を、システム内のどこか別の場所でやるってことを意味する。PHPのフレームワークでも、制御の反転は実現されてきた。実際のところ、何の制御を反転しているのだろう。反転した結果、制御はどこに行ってしまったのだろう。MVCフレームワークには、あらゆるコントローラの親になる基底コントローラが用意されている。それを継承しなければ依存関係のアクセスできない。これはこれで制御の反転だが、でも、依存関係を緩くしたというよりは、単純に依存関係を別の場所に移しただけのことだ。依存性の注入を使えば、これをもっとすっきりと解決できる。依存関係が必要になったときに、必要なものだけを注入すればいい。ハードコーディングする必要はない。