Entry

【freo】必要な内部情報をどうやって探すのかのメモ

freoしか書くことねぇのかよ、とか云われそうな感じですが、今いじってる最中なので備忘録としての側面が非常に強いのです。
以降、ほんとに大したこと書いてないです。

さて、もにゃもにゃいじっててふと出会う、「ここんとこのこの情報手に入らないの?」という内容の調査方法について。
私は僥倖なことに、昔(ええと、まだOracleが10gとかなりたての頃)仕事としてSQLを触ってまして、趣味と仕事の境目みたいなところでphpとsmartyもいじってますので、なんとなーーーーく、コードの中身とfreoのDB定義読んでると「まあここがこれでこうだろう」くらいのことは分かるんですが、いかんせん、phpの細かいところはどうもよくわからない。
具体的には、phpのクラスとかなんとかので -> こういうやつ出てくると、拒否反応甚だしくなるのです。
あのー、クラスってさ、なんだろう、あの、わかるんだけど、ええとつまり、無名関数をぱかすかつくるより、関連付けさせておいたらいいよねわかりやすいよねって、そういうことでいいんだろうか。そういうことにしておいてるけど。

とまれまず開くのは、「使おうとしてる機能にあたるphp」。
で、次に「使おうとしてるsmartyに割り当てられてる変数をassinされてる元の変数」。
これはぶっちゃけ、↑をlib全体にgrepかけたほうが早いけど。

たとえば、freoのテンプレートで「plugin_page_siblings のあたりで拾いたいんだよなー」となったら、「plugin_page_siblings」でgrep。
するとこのへんが出る。

		'plugin_page_siblings'           => $pages,
引っかかったら、該当ファイルのこの行にジャンプ(する機能がgrep備えたテキストエディタには大体ある)(わたしはMkEditorを愛用しています)(休題)

そしたら該当ファイルの中で、割り当て元の変数に値が入れられているところを探す。

display.page_siblings云々だと、ここですね。

	$pages = array();
	while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
		$pages[$data['id']] = $data;
	}

1行目で初期化して、3行目で都度ぶっこみ。
SQLでDBから拾ってきたデータを、「id」の値をキーにハッシュぶちこみしていることがわかります。

次に発行されたSQLを探して遡る。
ていうかまあ、大体直前です。

	//ページ取得
	$stmt = $freo->pdo->prepare('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'pages WHERE pid = :id AND approved = \'yes\' AND (status = \'publish\' OR (status = \'future\' AND datetime <= :now1)) AND (close IS NULL OR close >= :now2) ' . $condition . ' ORDER BY sort, id');
	$stmt->bindValue(':id',   $pid);
	$stmt->bindValue(':now1', date('Y-m-d H:i:s'));
	$stmt->bindValue(':now2', date('Y-m-d H:i:s'));
	$flag = $stmt->execute();
	if (!$flag) {
		freo_error($stmt->errorInfo());
	}

この例だとSQLが SELECT * なので、楽だけどめんどいですね。カラム名探しにfreoのサイト行かないといけないから。
とりあえず、うすらぼんやりと「記事の公開日時を元に必要なページの行を全部ソート順>ID順の並びで拾う、というのは頭の片隅に置くと。

で、freoのサイトに行って、DBからほしい情報を探して、割り当て後の方でなんとかしたり、手前のほうで何とかしたりすると。
この「なんとか」は、やりたいことに因って変動するのでアレですけれども、ひとまずさわりとして。

ただまあ、大概の値はsmarty側にassignされてるから、smartyでなんとかしていいと思うなあ、freoの場合。
本来smartyは条件分岐とか細かい処理は行わない方がいいスタンスだけど、改造となるとやっぱね

Pagination

Comment

  • コメントはまだありません。

Post Your Comment

  • コメントを入力してください。
登録フォーム
Name
Mail
URL
Comment
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

Utility

Calendar

11 2024.12 01
SMTWTFS
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

Tag Crouds