タグ

phpとPHPに関するchanpon0のブックマーク (182)

  • Doctrine1でDBのマイグレーションを行う

    みなさんこんにちは。@ryuzeeです。 アジャイルな開発を行って頻繁にデータベースのスキーマを変更したり頻繁にプロダクション環境にリリースしたりCIサーバで継続的にテストをしようとすると、データベース回りの変更をきちんと管理していくというのが非常に重要になります。 アマチュア的なアプローチだと毎回差分のsql文を書いて手でデータベースにわせていくのですが、以下のような問題があります。 複数のsqlを書いたファイルがあったとして、データベースの状態は実行順序に依存する可能性があるSQLRDBMSの仕様に依存する複数人で開発していると変更点を開発メンバーが認識して追随しているか判別しにくいCREATEやALTERコマンドは書いていても、もとに戻すことは想定していないことが多いので、前バージョンに戻しにくい似た話で、あるリリースの時点でデータベースがどういうスキーマだったのかを再現するのが

    Doctrine1でDBのマイグレーションを行う
  • ディレクトリ内のファイル一覧を取得する - Affamative Way

    googleにて「php ディレクトリ ファイル一覧」と検索したところこのページが一件目にHIT readdir:ディレクトリ内のファイル一覧を取得する しかしながら間違ってるというオチ。。。 同じこと調べる人がコッチにくるといいなぁということでエントリ。 以下、間違ってるサンプルコード <?php //ディレクトリ・ハンドルをオープン $res_dir = opendir( '.' ); //ディレクトリ内のファイル名を1つずつを取得 while( $file_name = readdir( $res_dir ) ){ //取得したファイル名を表示 print "{$file_name}\n"; } //ディレクトリ・ハンドルをクローズ closedir( $res_dir ); ?> 正しくは以下のように取得してやる PHP: readdir - Manualより引用 警告 この関数は

    ディレクトリ内のファイル一覧を取得する - Affamative Way
    chanpon0
    chanpon0 2012/06/27
  • PHP: escapeshellarg - Manual

    On Windows, this function naively strips special characters and replaces them with spaces. The resulting string is always safe for use with exec() etc, but the operation is not lossless - strings containing " or % will not be passed through to the child process correctly. Correctly escaping shell commands on Windows is not a simple matter. Programs must consider two distinct escape mechanisms whic

    PHP: escapeshellarg - Manual
  • ZIP形式圧縮ファイルをphpで作成せよ| BirdLab

    Linuxのコマンドになじみがあれば、すぐできちゃう簡単な方法。 (zipコマンドが使えない場合の方が少ないでしょう) //この中にファイルを全部入れておく。サブディレクトリなどあってもOK $tempDir = 作業用ディレクトリ; //ここにzipファイルを作ります $filepath = 生成するzipファイルのパス; //このコマンドを $command = 'cd ' . $tempDir . '; zip -r ' . $filepath . ' .'; //実行します exec($command); 実行しているコマンドは、セミコロン(;)でつないだ2つのコマンド。 「作業用ディレクトリに移動して、そこから下を全部zipに圧縮する」ということをしています。 作業用ディレクトリに移動しないとどうなるかは、興味があったらお試しあれ。(不要な階層構造がzipの中にできちゃって。。。

    ZIP形式圧縮ファイルをphpで作成せよ| BirdLab
  • PHPでファイルを zipするためのサンプルと 4つの注意点

    PHPzipするサンプルと注意点。 注意点 (Windowsの場合) php.iniの、extension=php_zip.dllのコメントアウトを外しておかないと、「Fatal error: Class 'ZipArchive' not found」が出る。zipのopen時に、ZIPARCHIVE::CREATEを指定すると、指定したパスにまだzipが無い場合は新規作成し、既にzipがある場合はそのzipに各ファイルが追加される。ZIPARCHIVE::OVERWRITEを指定すると、常にzipを新規作成する。既存のzipがある場合は、zip自体を上書きする。(2009/03/23訂正:仕様が変わり、既存のZIPが無い場合にOVERWRITEを指定するとopen()に失敗するようになった。対策は下記サンプルコードを参照。)zipを展開するクライアントがWindowsの場合、ファイル名

  • STUDIO WING .lib: PHP:ディレクトリを削除する

    PHP/Perl/FLASH/SQL/JavaScriptなどプログラムの構築方法サンプル

    chanpon0
    chanpon0 2012/06/22
  • 【 ほでなすPHP 】 PHP5の基本 -> スタティックメンバ/クラス定数

    スタティックメンバ/クラス定数 インスタンスメンバとクラスメンバ/スタティック(静的)メンバ PHP4では、「::演算子(コロン2個)」を使う事で、クラスのインスタンスを生成しなくても、静的にクラスのメンバ関数(この場合「クラス関数」と言う)をコールすることが出来ました。また、メンバ変数の参照は出来ず、静的にコールするクラス関数内でメンバ変数を参照する事も出来ませんでした(これは、メンバ変数を参照するために「変数$this(オブジェクト自身へのリファレンス)」を使用する必要があるが、静的にコールする場合はオブジェクトが存在しない為)。 PHP5では、ちょっとした小細工をする事でメンバ変数の参照が出来るようになります。 メンバ変数を静的に参照する場合は、そのメンバ変数の定義時に、アクセス制限修飾子とは別に「static修飾子」を付与してやります。また、この「スタティック修飾子」はメンバ関数に

    chanpon0
    chanpon0 2012/06/21
    「::」静的なクラス、メソッド
  • ZF1.10 Zend_Cache - 弱小PHPerの憂鬱

    [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 Zend_Cacheとは。 http://framework.zend.com/manual/ja/zend.cache.introduction.html > Zend_Cache は、任意のデータをキャッシュするための一般的な手法を提供します。 なんだそれは。 ドキュメントの説明は長々と書いてあって丁寧は丁寧なのですが、長すぎて読むのがしんどいです。 簡単に言うとSmartyキャッシュで、要はob_start()、ob_end_clean()、file_put_contents()、file_get_contents()あたりを纏めてパッケージングしたようなものとなります。 とりあえず簡単な例を作ってみます。 ちなみにリファレンスでは最初にZend_Cache::start(

  • Zend Framework: Documentation

    Zend_Cache には、3 つのポイントがあります。まず最初は一意な ID (文字列) で、 これによってキャッシュレコードを識別します。二番目は、例に含まれる 'lifetime' ディレクティブです。これは、キャッシュされたリソースの 「賞味期限」を定義するものです。三番目のポイントとなるのが条件付きの実行処理で、 不要なコードを完全に読み飛ばすことで処理速度を向上させることになります。 フロントエンドの主となる関数 (例えば Zend_Cache_Core::get()) は、キャッシュがヒットしなかった場合には常に false を返すよう設計されています。 そのため、キャッシュしたい (そして読み飛ばしたい) 部分を if(){ ... } 文で囲む際に、条件式として Zend_Cache のメソッド自身を使用できるようになっています。 このブロックの最後では、出力内容を (例

  • http://hiropo.co.uk/archives/279

    chanpon0
    chanpon0 2012/06/04
    ディレクトリを丸ごと FTP サーバにアップロードする
  • Manual :: ディレクトリを丸ごと FTP サーバにアップロードする

    mixed Net_FTP::putrecursive ( string $local_path , string $remote_path , bool $overwrite = false , int $mode = null ) Parameter string $local_path - アップロードしたいディレクトリ。 絶対パス、あるいはスクリプトの ディレクトリからの相対パスで指定します (注意:include を利用している 場合、スクリプトのディレクトリはインクルード元のファイルがある場所と なります!) string $remote_path - アップロードしたいパス。 絶対パス、あるいは相対パスで指定します。 bool $overwrite = false - リモートディレクトリが存在した場合に、それを上書きするかどうか。 指定しなかった場合、ディレクトリは上書きさ

  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

  • ob_end_clean と ob_clean の違いはなんですか?

    >バッファ自体とはどういう意味でしょうか? この質問が出るということは、ob_XXXX系関数を利用するにあたっての基礎知識が不足してますね。 --------------------------------- 第一に、ob_XXXX系関数こと、 出力制御関数(output control)について知識を習得しましょう。 参考URLに、マニュアルへのリンクを記載しておきます。 一読して知識を習得してください。 第二に、出力制御関数(output control)の使い方の基を押さえましょう。 基は、ob_start() と ob_end_XXXX() を組合せて使うことです。 ・ob_start()で出力制御を開始。 ・ob_end_XXXX()で出力制御を終了。 この、ob_start()とob_end_XXXX()は【必ず】対で利用しなければならないルールなので注意してください。 -

    ob_end_clean と ob_clean の違いはなんですか?
  • PHPでn日後を計算したい

    --- <?php function getNextBusinessDay($date_start, $count) { $holiday = array( "2011-07-18" => "海の日"); $date = clone $date_start; print $date->format("Y-m-d")."の".$count."営業日後を調べます\n"; $oneday = new DateInterval("P1D"); while ($count > 0) { $date->add($oneday); $str = $date->format("Y-m-d"); $w = $date->format("w"); if ($w < 1 #日曜 || $w > 5 #土曜 || isset($holiday[$str])) { #祝日 print $date->format("

    PHPでn日後を計算したい
    chanpon0
    chanpon0 2012/05/24
    日付計算 非営業日
  • とても簡単にPHPからPOSTリクエストを送信する方法【PHP】 - Programming Magic

    今まで、PHPからPOSTリクエストを送信する方法は、fsockopen関数を使って書く方法しか知らなかったが、調べてみると意外といろいろな方法があった。 fsockopen関数を使う方法     →参考:PHP TIPS Vol.3 ソケット拡張モジュールを使う方法     →参考:HTTPリスエストをそのまま返すPHPサーバ | Shin x blog ストリーム関数+ファイルシステム関数を使う方法     →参考:cURLを使わずに、PHPでPOSTリクエストを送信する - PHPプロ!ニュース HTTP拡張モジュールを使う方法 CURL関数を使う方法     →参考:php curlをつかったオリジナルクラス (myCurlRequest) - hiyuzawa.jpn.org Zend_Http_Clientを使う方法     →参考:【PHP TIPS】 51. ス

    chanpon0
    chanpon0 2012/05/24
  • サービス終了のお知らせ

    平素より「PHPプロ!」をご愛顧いただき、誠にありがとうございます。 2006年より運営してまいりました「PHPプロ!」ですが、サービスの利用状況を鑑みまして、2018年9月25日(火曜日)をもちましてサービスを終了させていただくことになりました。 サービス終了に伴いまして、2018年8月28日(火曜日)を持ちまして、新規会員登録ならびにQ&A掲示板への新たな質問、回答の投稿を停止させていただきます。 なお、ご登録いただいた皆様の個人情報につきましては、サービス終了後、弊社が責任をもって消去いたします。 これまで多くの皆様にご利用をいただきまして、誠にありがとうございました。 サービス終了に伴い、皆様にはご不便をおかけいたしますこと、心よりお詫び申し上げます。 件に関するお問い合わせはこちらよりお願いいたします。

  • サービス終了のお知らせ

  • PHPでGnuPGを使ってみる

    こんにちは。橋です。 今日はPHPでGnuPGを使って、OpenPGP方式による暗号化を行う方法を紹介します。 PHPでGnuPGを扱うためには、PECLのgnupg拡張モジュールを使います。 まずはプレーンテキストに対して暗号化と署名を行う方法です。 どちらも専用のメソッドを使うことで簡単に行うことができます。 以下が使用例です。 <?php // 暗号化用フィンガープリント(相手の鍵)、署名用のフィンガープリント(自分の鍵)、パスフレーズ $crypt_fp = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $sign_fp = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $passphrase = 'fugafuga'; $plain_text = 'hogehoge'; $gnupg = new

    PHPでGnuPGを使ってみる
  • PHP: glob - Manual

    パラメータ pattern パターン。チルダの展開やパラメータ置換は行いません。 Special characters: * - ゼロ文字以上の文字にマッチします。 ? - 正確に(任意の)一文字にだけマッチします。 [...] - グループ化された文字のうち、一文字にマッチします。 はじめの文字が ! だった場合、 グループにないあらゆる文字にマッチします。 \ - 次に来る文字をエスケープします。 但し、GLOB_NOESCAPE が使われている場合は除きます。 flags 有効なフラグは次のとおりです。 GLOB_BRACE (int) {a,b,c} を 'a', 'b', 'c' にマッチさせるように展開します。 注意: GLOB_BRACE は GNU システムでないシステムによっては使えない場合があります。 使えないシステムの例として、Solaris や Alpine Lin

    chanpon0
    chanpon0 2012/05/16
    パターンにマッチするパス名(ファイル名)を取得。正規表現利くし地味に便利。
  • 『phpinfo.phpで何も表示されない真っ白なページになっちゃったら』

    前々回の記事でphpinfo.phpがちゃんと表示されなかった原因が判明しました。 そりはね、php.iniの中でshort_open_tagがoffになっていたからです。 昔はこのフラグはなかった気がするんですが最近はこれがあるために普通のphpinfo.phpだと無視されちゃうようです。 <? の代わりに <?php を使うといいです。 正しいphpinfo.phpは以下のように書きます。 <?php phpinfo(); ?> これでちゃんと表示されました。 勉強になったかな。

    chanpon0
    chanpon0 2012/05/15
    挙動が変わった