WHAT'S NEW?
Loading...

CakePHP1.3の話




SQLの修行は一旦おいておき、CakePHP1.3がどういう動きをするのか調べてみた。


上から順番にインデントさせて書いてみた。
さすがに作りが凝ってる。

■/index.php
・各種定数の定義

  ■/app/webroot/index.php
  ・各種定数の定義
  ・bootstrapの読み込み

    ■/cake/bootstrap.php
    ・PHPバージョン定数の定義
    ・PHPエラー表示に関する設定
    ・/cake/basics.phpの読み込み


      ■/cake/basics.php
      ・日時定数の定義
      ・clone関数の定義
      ・config()関数の定義
      ・uses()関数の定義
      ・debug()関数の定義
      ・getMicrotime()関数の定義
      ・sortByKey()関数の定義
      ・array_combine()関数の定義
      ・h()関数の定義
      ・pluginSplit()関数の定義
      ・a()関数の定義
      ・aa()関数の定義
      ・e()関数の定義
      ・low()関数の定義
      ・up()関数の定義
      ・r()関数の定義
      ・pr()関数の定義
      ・params()関数の定義
      ・am()関数の定義
      ・env()関数の定義
      ・file_put_contents()関数の定義
      ・cache()関数の定義
      ・clearCache()関数の定義
      ・stripslashes_deep()関数の定義
      ・__()関数の定義
      ・__n()関数の定義
      ・__d()関数の定義
      ・__dn()関数の定義
      ・__dc()関数の定義
      ・__dcn()関数の定義
      ・__c()関数の定義
      ・array_iff_key()関数の定義
      ・array_intersect_key()関数の定義
      ・LogError()関数の定義
      ・fileExistsInPath()関数の定義
      ・convertSlash()関数の定義
      ・http_build_query()関数の定義
      ・ife()関数の定義
    ・マイクロタイムの代入
    ・/cake/config/paths.phpの読み込み

      ■/cake/config/paths.php
      ・各種パスの定数定義

    ・/cake/libs/object.phpの読み込み

      ■/vace/libs/object.php
      ・Objectクラス定義
        ・Object()メソッド定義
        ・__construct()メソッド定義
        ・toString()メソッド定義
        ・requestAction()メソッド定義
        ・dispatchMethod()メソッド定義
        ・_stop()メソッド定義
        ・log()メソッド定義
        ・_set()メソッド定義
        ・cakeError()メソッド定義
        ・_persist()メソッド定義
        ・_savePersistent()メソッド定義
        ・__openPersistent()メソッド定義
    ・/cake/libs/inflector.phpの読み込み

      ■/cake/libs/infrector.php
      ・Inflectorクラス定義
        ・_pkuralメンバ定義
        ・_singulerメンバ定義
        ・_uninflectedメンバ定義
        ・_transliterationメンバ定義
        ・_pluralizedメンバ定義
        ・_singularizedメンバ定義
        ・_underscoreメンバ定義
        ・_camelizeメンバ定義
        ・_classifyメンバ定義
        ・_tableizeメンバ定義
        ・_humanizeメンバ定義
        ・getInstance()メソッド定義
        ・_cache()メソッド定義
        ・rules()メソッド定義
        ・pluralize()メソッド定義
        ・singularize()メソッド定義
        ・camelize()メソッド定義
        ・underscore()メソッド定義
        ・humanize()メソッド定義
        ・tableize()メソッド定義
        ・classify()メソッド定義
        ・variable()メソッド定義
        ・slug()メソッド定義

    ・/cake/libs/configure.phpの読み込み

      ■/cake/libs/configure.php
      ・Configure(Object)クラス定義
        ・debugメンバ定義
        ・getInstance()メソッド定義
        ・write()メソッド定義
        ・read()メソッド定義
        ・delete()メソッド定義
        ・load()メソッド定義
        ・version()メソッド定義
        ・store()メソッド定義
        ・__writeConfig()メソッド定義
        ・listObjects()メソッド定義
        ・corePaths()メソッド定義
        ・buildPaths()メソッド定義
        ・__loadBootstrap()メソッド定義

      ・App(Object)クラス定義
        ・typesメンバ定義
        ・modelsメンバ定義
        ・behaviorsメンバ定義
        ・controllersメンバ定義
        ・componentsメンバ定義
        ・datasourcesメンバ定義
        ・libsメンバ定義
        ・viewsメンバ定義
        ・helpersメンバ定義
        ・pluginsメンバ定義
        ・vendorsメンバ定義
        ・localesメンバ定義
        ・shellsメンバ定義
        ・searchメンバ定義
        ・returnメンバ定義
        ・__cacheメンバ定義
        ・__mapメンバ定義
        ・__pathsメンバ定義
        ・__loadedメンバ定義
        ・__objectsメンバ定義
        ・path()メソッド定義
        ・build()メソッド定義
        ・pluginPath()メソッド定義
        ・themePath()メソッド定義
        ・core()メソッド定義
        ・objects()メソッド定義
        ・import()メソッド定義
        ・getInstance()メソッド定義
        ・__find()メソッド定義
        ・__load()メソッド定義
        ・__map()メソッド定義
        ・__mapped()メソッド定義
        ・__overload()メソッド定義
        ・__settings()メソッド定義
        ・__paths()メソッド定義
        ・__remove()メソッド定義
        ・__list()メソッド定義
        ・__destruct()メソッド定義

    ・/cake/libs/set.phpの読み込み

      ■/cake/libs/set.php
      ・Setクラス定義
        ・merge()メソッド定義
        ・filter()メソッド定義
        ・pushDiff()メソッド定義
        ・map()メソッド定義
        ・__array()メソッド定義
        ・__map()メソッド定義
        ・numeric()メソッド定義
        ・enum()メソッド定義
        ・format()メソッド定義
        ・extract()メソッド定義
        ・matches()メソッド定義
        ・classicExtract()メソッド定義
        ・insert()メソッド定義
        ・remove()メソッド定義
        ・check()メソッド定義
        ・diff()メソッド定義
        ・contain()メソッド定義
        ・countDim()メソッド定義
        ・normalize()メソッド定義
        ・combine()メソッド定義
        ・reverse()メソッド定義
        ・flatten()メソッド定義
        ・__flatten()メソッド定義
        ・sort()メソッド定義
        ・apply()メソッド定義

    ・/cake/libs/cache.phpの読み込み

      ■/cake/libs/cache.php
      ・Cacheクラス定義
        ・__configメンバ定義
        ・__nameメンバ定義
        ・__resetメンバ定義
        ・__enginesメンバ定義
        ・getInstance()メソッド定義
        ・config()メソッド定義
        ・_buildEngine()メソッド定義
        ・configured()メソッド定義
        ・drop()メソッド定義
        ・__loadEngine()メソッド定義
        ・set()メソッド定義
        ・gc()メソッド定義
        ・write()メソッド定義
        ・read()メソッド定義
        ・increment()メソッド定義
        ・decrement()メソッド定義
        ・delete()メソッド定義
        ・clear()メソッド定義
        ・isInitialized()メソッド定義
        ・settings()メソッド定義

      ・CacheEngineクラス定義
        ・settingsメンバ定義
        ・init()メソッド定義
        ・gc()メソッド定義
        ・write()メソッド定義
        ・read()メソッド定義
        ・increment()メソッド定義
        ・decrement()メソッド定義
        ・delete()メソッド定義
        ・clear()メソッド定義
        ・settings()メソッド定義
        ・key()メソッド定義

    ・インスタンスの取得
    ・/cake/dispatcher.phpの読み込み

      ■/cake/dispatcher.php
      ・Core::Routerインポート              <ここ重要
      ・Controller::Controllerインポート    <ここ重要
      ・Dispatcher(Object)クラス定義
        ・baseメンバ定義
        ・webrootメンバ定義
        ・hereメンバ定義
        ・paramsメンバ定義
        ・__construct()メソッド定義
        ・dispatch()メソッド定義
        ・_invoke()メソッド定義
        ・__extractParams()メソッド定義
        ・parseParams()メソッド定義
        ・baseUrl()メソッド定義
        ・__getController()メソッド定義
        ・__loadControllerメソッド定義
        ・uri()メソッド定義
        ・getUrl()メソッド定義
        ・cached()メソッド定義
        ・asset()メソッド定義
        ・_deliverAsset()メソッド定義

phpドキュメンタで拾うと勉強にならないと思い、ソース見ながら書き抜いてみた。
疲れた。


で、これを見ると、bootstrap.phpから呼ばれているbasics.phpで、__()関数が使えるはずなので、app/libsとかにおいたファイル内で__()関数使えると思うんだけど、エラーになる。

basics.phpは素のphp関数が書かれているので、クラスじゃない。つまりオブジェクト化できない。
だから普通にインクルードしてしまえばいいのかな。
でも出来ればapp/libs内においたファイル内でクラス化して、同じ関数使いたいんだよな。

いっそ、basicsクラスをつくっちまうか。
それでgettextつかってi18n文字列拾えるのかどうか疑問だけど。


正直言って、モデルファイルで__()関数使えないとか、かなり意味不明。