PHP:CodeIgniter でライブラリを読み込んだ時のインスタンス名の注意点

PHP のフレームワーク、CodeIgniter でライブラリを自作し、読み込んだ時のインスタンス名ではまったので、その注意点をメモ。

CodeIgniter 本家日本ユーザサイト

目次

基本的なライブラリの利用方法

ライブラリの基本的な利用方法は、作って使う、の2ステップです。
たとえば次のようにします(ヘルプから)。

  1. 「application/libraries フォルダ」に「Someclass」を作成
    [code lang=’php’] < ?php if (!defined('BASEPATH')) exit('No direct script access allowed'); class Someclass { function some_function() { } } ?>
    [/code]
  2. コントローラから利用するコード
    [code lang=’php’] //ライブラリをロードして
    $this->load->library(‘someclass’);
    //利用する
    $this->someclass->some_function();
    [/code]

ここまでは問題ありませんでした。

はまったのは。。

私がはまったのは、ここでライブラリのファイル名およびクラス名を、「SomeClass」としたのが原因でした。

「SomeClass」のインスタンス名は「someClass」だと思って、ずっと「$this->someClass->some_function();」の様にアクセスしていたんです。

しかし、CodeIgniter は途中の文字列に関係なく、オブジェクトインスタンス名はすべて小文字で扱う必要があるのでした。

※しかし、$this->load->library(); ではファイル名の大文字・小文字は関係ないので、これも混乱の理由でした

別名も付けられる

そうなると、せっかくクラス名を CamelCase で書いたとしても、利用時にはすべて小文字でアクセスすることになり、可読性の面が気になります。

何かしら方法は無いのかと探してみたら、1.7 系からは、オブジェクトインスタンス名を変更できるようです。

そのコードは次の通り、第3引数に別名を指定するだけです。

[code lang=’php’] //ライブラリを別名でロードして
$this->load->library(‘someclass’, ”, ‘sc’);
//利用する
$this->sc->some_function();
[/code]

簡単でいいですね。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す