主に IT 技術を整理するためにメモ的に書き溜めています。少しだけフリーソフトもあるよ。コメントを残すには、 facebook を使ってください。

php の foreach で参照渡しをするには

phpforeach は基本値渡しで、受け取った値を変更しても当然元の配列データは変更されない。
でも実際は参照渡しもできることを知ったので一応メモ。

以下は普通の値渡しの例。

$enjoi = array("normal", "crazy");
foreach( $enjoi as $e )
{
  if( $e == "crazy" )
  {
    $e = "normal";
  }
}
var_dump($enjoi);
array(2) { [0]=>  string(6) "normal" [1]=>  string(6) "crazy" }

でも関数の参照渡しみたいに & をつけてやると、参照渡しを使って foreach で配列を処理できる。

$enjoi = array("normal", "crazy");
foreach( $enjoi as &$e )
{
  if( $e == "crazy" )
  {
    $e = "normal";
  }
}
var_dump($enjoi);
array(2) { [0]=>  string(6) "normal" [1]=>  &string(6) "normal" }

同様に key-value 配列を扱う場合も value の変数に & をつければ同じようにできる。

foreach( $enjoi as $key => &$val ) { ... }

もっと読む

Symfony2 memo

Symfony2 で新たに追加された感じのやつを忘れないようにメモ。

増えてきたので、段落化しました。


もっと読む

Mac に php をインストールするには

Mac に LAMP もとい MAMP 環境を構築したときのメモ。いろいろと癖もあったりはまったところもあったけど、とにかくできました。

構築する上でのポリシーとしては、

  • ライブラリ関連はできるだけ DarwinPorts でインストールしたものにリンクさせる。
  • MySQL 、 PostgreSQL 、 Apache 、 php は /usr/local にインストール。
  • Apache と php はなるべく Shared module 化するようにする。

Mac にインストールされているライブラリと DarwinPorts で入れたものを混合するとコンパイルでエラーを起こすことが多いっぽい。

環境は以下の通り。
Mac OS X 10.5.6
mysql-5.1.33
postgresql-8.3.7
apache-2.2.11
php-5.2.9


もっと読む

Zend_Mail でメールを送るには

Zend Framework の Zend_Mail を使用すると色々な方法で簡単にメールが送れます。色々試してみたので、 Zend_Mail を使用して以下のそれぞれの方法でメールを送る方法のメモ。

  • ローカルの sendmail(.postfix) を使用してメールを送る
  • リモートもしくはローカルの SMTP に接続してメールを送る
  • Gmail もしくは auth-SMTP などの有効なサーバでもメールを送ってみる

もっと読む

PHPUnit with Zend Framework memo

Zend framework で PHPUnit を統合したテスト環境を構築したときのメモ。


もっと読む

Wordpress を SQLite で動かすには

うちのレンタルサーバのスペックが低いため MySQL 動かしたくないので、 Wordpress を SQLite で動かすようにしてみた。

してみたと言っても、プラグインがあるのでそれを入れるだけ。でもそもそも個人や一企業で使うブログを MySQL なんてもので動かすのもナンセンスな話だし、 SQLite は早い。なので、一応メモ。


もっと読む

カスタム Zend_Form_Element の作成

Zend_Form を使ってよく Wysiwyg の出力コードを生成するようなカスタムエレメントを生成したいことがよくある。
昔のバージョンでは Zend_View クラスの addHelperPath() をしただけだった記憶があったんだけど、今は少し違うっぽい。
なので一通り調べて実装しなおしてみた時のメモ。

Zend Frameowrk のバージョンは 1.8.1。
ディレクトリ構成は以下の通り。

+--- application ---+--- controllers
|                   +--- modles
|                   +--- forms --- elements
|                   +--- layouts
|                   +--- views ---+--- helpers
|                                 +--- scripts
|
+--- incude --- Zend
|
+--- public_html

もっと読む

CLI(php コマンドライン) から Zend Framework アプリを実行するには

php Zend Framework で構築されたアプリケーションで、定期的に Cron から実行される処理をフレームワークの一部として実装した時のメモ。

手順としては、 php コマンドラインで呼び出した際のオプションを取得し、コントローラ、アクション、モジュール、パラメータを適切に設定してリクエストを構築、ルーター、レスポンスを指定してフロントコントローラを実行する。


もっと読む

Zend Framwork を IIS 上の PHP で動かすには

先のポストに引き続き、 IIS x PHP 絡みで、 Zend Framwork を IIS 上の PHP で動かす時のメモ。特に rewrite モジュールが apache のようにはいかないので、それについて。

とりあえず今回の環境は以下の通り

  • IIS6
  • PHP-5.2.5
  • IIRF-1.2.15

もっと読む

IIS6 で php.ini の再読み込みをするには

IIS6 上で php が動作してる場合に、 php.ini の変更を IIS の再起動無しで反映させるには、アプリケーションプールをリサイクルすればいいらしい。

IIS Manager を開き、ツリービューのホスト配下の [Application Pools](アプリケーションプール?) を開き、 DefaultAppPool (デフォルトアプリケーションプール?)を右クリックして Recycle (リサイクル?)を実行する。

Smarty で便利な関数、定義変数

Smarty には覚えておくと便利な関数は変数がいくつかあるので、それのメモ。


もっと読む

isset(), is_null(), ===, ==, NULL, false

今回は PHP を理解する中でもっとも難しいとされている isset() 関数や is_null() 関数や、false や NULL に対する == や === 演算子の結果についてまとめてみた。

何が難しいかって別に分かれば難しくないんだけど、はっきり言ってややこしすぎる。
俺はこの PHP の実装があまり好きじゃない。
でもとにかくこれは理解しておかないと、後々よく分からないバグではまったりするので一応まとめてみた。


もっと読む

Zend Framework の Router の使い方

Zend Framework には Zend_Controller_Router_Route っていうのがあり、これで URL のパスの制御ができる。
例えば、 enjoitech.jp/help っていう URL を実装したい時に、 Zend の標準の設定では /help は helpController の indexAction に通じるわけだけど、これを Router でうまい事変更してやれる。

ここの例では staticController っていう static なコンテンツを全部管理するコントローラーを作っておいて、そこに helpAction っていうアクションをつくり、/help をそこに通じるようルーティングする方法を説明する。


もっと読む

PHP Smarty でゼブラ柄のテーブルを作るには

ゼブラ柄、ストライプ柄のテーブルを描写します。cycle 関数を使うと便利。

<table>
{foreach from=$hoges name=hoge item=h}
<tr style="background-color: {cycle values="#ccc, #fff"};">
<td>{$h.name}</td>
<td>{$h.value}</td>
</tr>
{/foreach}
</table>

PHPでファイルアップロードのプログレスバーを実装するには

PHPでアップローダーを作るときに、プログレスバーをどうにか実装できるか調べたら、どうやらできるっぽかったので試してみた。
ちなみにできると言っても制約がいくつかあるみたい。まず第一に、 PHP 単体ではファイルのアップロード状況を把握したりすることはできない。そのため PECL APC エクステンションをインストールする必要がある。
また PHP のバージョンは 5.2 以上。 PECL APC エクステンションのバージョンは 3.0.13 以上。
そのため、うちの CentOS5 も FC6 もパッケージでは対応できなかった。

環境は以下の通り。
php-5.2.5
PECL APC-3.0.16

※追記
実はこの APC はスレッドセーフじゃないらしく、一つのアップロードが完了する前に次のアップロードが開始されると、現在進行中のキャッシュがクリアされるらしいので注意。


もっと読む

Plesk で open_basedir とか safe_mode の回避

Plesk で php 関連の作業していると、必ずといっていいほど毎回 open_basedir とか safe_mode のエラーではまり、その度に解決策を探しているので、とりあえずメモっておく。

今回の Plesk 環境は以下の通り。
Fedora Core 6
PSA-3.2.0


もっと読む

Facebook Application の作り方

最近個人的にはまってる Facebook アプリケーションを開発したときのメモ。
まだそんなに日本では有名じゃないけど、こういう形の Web アプリは個人的に好きだし、こういうアイデアを知っておくととても面白いと思う。
しかも Facebook アプリの作成は比較的簡単にできる。
とりあえず今回の環境は以下の通り。

CentOS-4.4
PHP-5
App URL: http://www.enjoitech.jp/facebook_dev/

実際は php 以外の言語でも非公式ながらそこそこライブラリがそろってる。


もっと読む

古い php mysql lib から 新しい mysqld にアクセスする

古いバージョンの php から新しいバージョンの mysql にアクセスした際に、こんなエラーをくらうことがある。

Warning: mysql_connect(): Client does not support authentication protocol requested by server;
consider upgrading MySQL client in *.php on line *
couldn't connect: Client does not support authentication protocol requested by server;
consider upgrading MySQL client

MySQL のパスワード認証方法が 4.0 から 4.1 でちょっと変わった事が原因。
サーバ側で php が新しくなるまで old password を使うように設定してやればいい。

# vi /etc/my.cnf
...
[mysqld]
old_passwords=1
...

もしくは、 mysql のユーザのパスワードを古い形式に変更してやる。

$ mysql
mysql> SET PASSWORD FOR user_name = OLD_PASSWORD('user_password');

Zend Framework + QuickForm + Smarty

今まで mojavi 、 symfony と php のフレームワークを使ってきたわけだけど、今回 Zend Frameworkを使ってみて明らかに一番使い易かった(入りやすかった)ので、ちょっとそれについてまとめておこうかなと。
# Cake はソースコードを見た時点で使う気うせた。。

まあ zend がやってるってことで、少くてもやっておいて損は無いかと。とりあえず QuickForm と Smarty は手放せないので、その当たりを交えてうまいこと C-MVC を構築する方法のメモ。

環境
CentOS-5
php-5.1.6
Zend Framework-1.0.1
QuickForm2-1.4
Smarty-2.6.18


もっと読む

Smarty で変数の数を取得する

例えば
$myarr = array(1, 2, 3);
$smarty->assign("myarr", $myarr);
と php 側でやった場合、
{$myarr|@count}
で取得できる。
ページ: 1 | 2 |
フリーソフトウエア
EnjoiFLV
EnjoiPacket
EnjoiCrypto
ランキング
rank1, rank2, rank3, rank7, rank9, rank10, rank11
todo メモ
facebook 対応
ページ処理
RSS feed
検索機能
認証いる?
更新日表示
実はカテゴリ機能
多言語
実はユーザ機能
ソースその内公開
動作環境メモ
php-5.1.6 with PDO
SQLite-3.3
IE6
FireFox-1.5
RSS
非認証

検索
Google