関連記事
-
(日本語) シンプルに設置できる数字Captcha「MathCaptcha」
Sorry, this entry is only available in 日本語.
-
(日本語) テキストから指定文字数で抜粋「excerpt」「truncate」「tail」
Sorry, this entry is only available in 日本語.
-
(日本語) 複数データベースの追加と切替
Sorry, this entry is only available in 日本語.
-
(日本語) ユーザエージェントを取得
Sorry, this entry is only available in 日本語.
-
(日本語) Captchaプラグイン「Captcha Component & Helper」
Sorry, this entry is only available in 日本語.
-
(日本語) テキストから自動的にリンクを付与「autoLink」と除去「stripLinks」
Sorry, this entry is only available in 日本語.
-
(日本語) テキストから指定文字をハイライト「highlight」・配列をリストに展開「toList」・二重改行を<p>タグへ変換「autoParagraph」
Sorry, this entry is only available in 日本語.
-
(日本語) 「isUnique」バリデーション
Sorry, this entry is only available in 日本語.
Comment
お尋ねします。
まったく同じ構成で、同じファイルをコピーするだけで、置き換えられるんですか?
例えば、他の部分はそのまま利用して、$messageだけ編集してそのままwrite等に渡してやりたいのですが。
コメントありがとうございます。
そうですね。本文通りコピーするとクラスは同じ名前で置き換えることができます。
ただし、writeに渡される$messageは"CakeLog::write"や"$this->log"から渡されるメッセージ(ログ)そのものですので、コントローラ側で編集することになると思います。
早速のレス、ありがとうございます。
Cakephpと、オブジェクト指向がまだ良くわかっていないのですが、
これは、FileLog.phpを lib/Cake/Log/Engine から、全然読まなくなることになるのでしょうか?
そうすると、writeメソッドだけを置き換えたいということは、無理なんですか?(必要な部分だけを置き換えたいのです)
「class appFileLog extends FileLog {」とかしても、大丈夫なのでしょうか?
他の「CakeLog::alert」とか、「CakeLog::debug」とかにも影響させるられるのでしょうか?
自分でもまったく同じファイルを置いて、メッセージ内容を置き換えて見るところまでは上手くいきました。
いろいろ考え直した結果、
appContorol.php で、編集するようにメソッド追加した方が良く思えてきたので、そちらにしました。
しかし、"/app/Lib"については、詳しく知りたいですね。
ソースも解析してみますが、ここを上手に利用している人がいないか探してみます。
ありがとうございました。
やり方としては2通りあるかと思います。
1) オーバーライドする
/lib/Cake/Log/Engine/FileLog.phpを/app/Lib/Log/Engine/FileLog.phpと丸々コピーして変更したい部分だけ編集する。
2) ログエンジンを新たに作成する
こうやると、CakeLog::alertやCakeLog::debugもappFileLogを継承することになるので、write部分だけ変更可能です。