Tag Archives: PHP

php でディレクトリ配下の全ファイルを逐次処理する方法


PHPを使ってディレクトリ配下の全ファイルを再帰的に処理する方法です。 イテレータを使います。

例えば全ファイルの絶対パスを出力するなら次のようにします。

イテレーションする対象をファイルだけに絞ったものを作るのもありですね。 次のように yield を使って関数を作ることもできます。

でもこれは yield を使っているため PHP 5.5 からしか使えません。 FilterIterator を使えば PHP 5.1 から使える関数を作成できます。

このように FileFilterIterator を作り、 $iterator = new FileFilterIterator($anIterator); のようにすれば、ファイルのみの Iterator が作れます。

Iterator なんて 言語の機能に依存しすぎだから readdir つかって自分でイテレータ作るべきだ」というご意見もあります。


Database available in FuelPHP


I wondered what database is available in FuelPHP, and look into FuelPHP code.

Environment

  • FuelPHP 1.8 (GitHub)

Available Database

The following DBMS is theoretically available in FuelPHP. It means that FuelPHP use driver for the following databases.

  • Cubrid
  • FreeTDS
  • Microsoft SQL Server
  • Sybase
  • Firebird
  • IBM DB2
  • IBM Informix Dynamic Server
  • MySQL
  • Oracle Call Interface
  • ODBC v3 (IBM DB2, unixODBC and win32 ODBC)
  • PostgreSQL
  • SQLite 3, 2
  • SQL Azure
  • 4D

How to investigate

First, read manual. At the section Database Introduction, it says Can be mysql, mysqli or pdo. Namely, FuelPHP can handle mysql specific driver and PDO driver.

Then, read PDO section of PHP document. For above all DBMS, PDO is available.

Well, can FuelPHP handle PDO and connect to DB in real? Now, look at the FuelPHP core code, which handle database connection. There are 3 kind of connection.php, each of them handle mysql, mysqli, PDO connection. It’ll be clear PDO is available in FuelPHP.

Take your Attention when you use sqlite

You should be careful when you use sqlite. (FuelPHP version 1.7.2)

Primary Key

Migration doesn’t work when you add Primary Key like MySQL. In sqlite3, we can’t add name to Primary Key. 例えば MySQL なら Primary Key id (id) となるところが、 sqlite3 だと Primary Key (id) というようになります。

So, we should create plain SQL or change FuelPHP core code. It’s a choice not to use Primary Key, but I don’t recommend.

また通常は migration file を php oil を使って作成すると 自動で UNSIGNEDid が作成されて AUTO_INCREMENT が設定されますが、 sqlite ではこれが動きません。 sqlite では AUTO_INCREMENT ではなく AUTOINCREMENT になります。 いまのところ自動生成のスクリプトでは対応していませんので FuelPHP の core のコードを変更する必要があります。 そして自動生成される UNSIGNED は 削除しましょう。 sqlite では UNSIGNED BIT INT というのが使えますが、 使ったところで INTEGER と解釈されます。

Blank Charset

sqlite3 では charset の指定方法が他のデータベースとは異なります。 PRAGMA statement を使います。 (確か sqlite3 では標準文字コードが utf-8 だったと思います。)

If you don’t set charset in db config (config/db.php), php oil migrate occurs an error of SQL, CREATE TABLE, because SQL which contains DEFAULT CHARACTER SET utf8 at last is executed. To prevent that, set empty string to charset, charset => ''. すると、 DEFAULT から始まる文字コード指定部分がなくなり、 sqlite3 でも php oil migrate が動くようになります。

db.php は次のように書きます。

このようにすると、 環境ごとに別の DB が作成されます。 table_prefixphp oil r migration の時には不要ですが、 php oil r migration:down の時に必要になることがあります。

Take your Attention when you use PostgreSQL

Migration doesn’t work. It is because PostgreSQL SQL syntax is somehow different from MySQL one. I recommend you to use FuelPHP Plugin for PostgreSQL.


000webhost : prevent inserting no use additional backslash


At 000webhost, backslash is inserted where it should not be, when you insert data to database with php.

You can prevent it by adding some setting.

make magic_quotes_gpc off when you make a file “.htaccess” in the directory where you want to do it and write

You can check magic_quotes_gpc in php code by executing get_magic_quotes_gpc


For PHP Beginners “Begin PHP with Eclipse”


PHP をちょっとやってみたい人におすすめです。本当に初心者向けなので、勉強熱心な人は買わないでください。

私の場合、役に立ったのはサンプル集です。というのもこの本、サンプルを解説するというスタイルで書かれているから、使いたいサンプルがあったらそこから読めばいい! っていう読み方ができるんです。

Amazon の評価では、eclipse の機能についての解説が薄い、という酷評が書かれていますが、それは eclipse についての話。PHP については初心者向けのいい本です。

ではどんなサンプルがあるの? ということですが……

  • アンケート (フォーム、集計、セッション変数の取扱)
  • グラフ (円グラフや棒グラフ、3Dのグラフも)
  • アクセスカウンタ
  • アクセス解析
  • ファイルへのI/O

こういうサンプルは初心者にとってはとても役に立ちますね。 結構利用させてもらいました。

『EclipseではじめるPHP(翔泳社)』(NRIラーニングネットワーク株式会社 )

特に今 eclipsePHP といえば、Zend が出している PDT が有名ですね。


困ったときはこれ! 『PHP逆引きクイックリファレンス』


読むものではありませんが、置いておくと役に立つ本です。

最近ではインターネットで調べるという手もありますし、最新情報を手に入れるならそれもいいかもしれません。 でも、こういった本の使い道がなくなったわけではないのです。

使い道

暇な時間にパラパラとめくってみてください。え?こんなのあったの?と気づくことがあります。

私の場合は、困ったときに使っています。これどうやってやるんだ~? となったときに、やっぱりあると便利ですよね。 PHP、はじめたばかりなんで。ノーマルな使い方ではありますが。

まったくの素人でも読める?

まったくの素人さんは……無理です。

プログラムを1回でも作ったことのある人で、Apache のインストールができる人なら大丈夫だと思います。でも、今なら マイクロソフトのWPIインストーラを使って全部一気にインストールできますよね。IISでも、WPIを使ってPHPをインストールすれば動きます。実際にやりました。PHP から SQLServer につなぐのも簡単ですね。

変数などの基本的なことは Chapter 1 に書いてあるので心配ないです。Chapter 20 には、Apache の設定についても記述があります。