タグ

*PHPに関するyamadarのブックマーク (199)

  • 複雑な条件分岐にサヨウナラ。PHPのルールエンジンRulerを使って複雑な条件をシンプルにしてみた - Qiita

    普通にifを使って書いてみる 単純化してますが、Kekkonクラスに、男性のステータスとかを持ったMenくらすのインスタンスを渡して、 canMarrige で結婚可能かどうかを返すと考えてください。 (ここのロジックはもう少し単純化出来ますが、条件を増やして複雑さを表現するのは大変だったので、あえて複雑なままにしてます) class Kekkon { private $men = null; public function __construct(Men $men) { $this->men = $men; } public function canMarriage() { // 年収が高ければ、身長か学歴のどちらかが高ければ結婚可能 if ($this->men->isHighIncome()) { if ($this->men->isHighHiehgt()) { return tr

    複雑な条件分岐にサヨウナラ。PHPのルールエンジンRulerを使って複雑な条件をシンプルにしてみた - Qiita
    yamadar
    yamadar 2015/11/24
  • PHPのisset,empty,is_null - モトクロスとプログラムと粉砕骨折と

    絶対忘れるのでメモ。 値if($var)issetemptyis_null $var=1TRUETRUEFALSEFALSE $var="";FALSETRUETRUEFALSE $var="0";FALSETRUETRUEFALSE $var=0;FALSETRUETRUEFALSE $var=NULL;FALSEFALSETRUETRUE $varFALSEFALSETRUETRUE $var=array()FALSETRUETRUEFALSE $var=array(1)TRUETRUEFALSEFALSE

    yamadar
    yamadar 2015/11/13
    「あれ、どっちだったっけ」という時に、毎回ここを見てる
  • 「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編)

    PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編) WordpressやFacebookなど、Webのさまざまなサービスで使われているPHP言語。約10年ぶりのメジャーバージョンアップとなる「PHP 7」がもうすぐ登場予定です。 PHP 7では互換性を維持しつつ、従来のPHP 5と比べて2倍以上の性能向上やメモリ使用量を低減するなど、大きな改善が実現されます。 そのPHPの生みの親であるRasmus Lerdorf氏が来日し、10月3日に都内で行われた「PHPカンファレンス2015」の基調講演「SPEEDING UP THE WEB WITH PHP 7」においてPHP7の新機能や性能について詳しく解説しました。 その内容をダイジェストで紹介しましょう。 SPEEDING UP THE W

    「PHP 7」登場。10年ぶりのメジャーバージョンアップで実行速度はPHP 5の2倍以上に、PHPの生みの親が語る。PHPカンファレンス2015(前編)
    yamadar
    yamadar 2015/11/04
  • PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita

    最初に結論 in_arrayには第三引数trueを指定しろ。絶対にだ。 はじめに in_arrayについては、はじめにPHP: in_array - Manualをよく読んでおいてほしい。 この記事に書いたコード断片は、どうか読むだけではなく自分で手を動かして確認してほしい。 PHPで短いコードを動かすのはPsySHを利用すると、とても捗る。ローカルに動作環境がなければ、Ideone.comなどのオンラインサービスを利用しても差支ない。 static $fruits = ["apple", "orange", "banana"]; in_array("apple", $fruits); // => true in_array("mikan", $fruits); // => false これがin_arrayのふつうの使ひかただ。 Webアプリケーションでの実例 では、次のような例を見てみ

    PHPのin_arrayは罠が多いので注意喚起が必要 - Qiita
    yamadar
    yamadar 2015/10/20
  • 最強のPHP統合開発環境 PHPStorm

    2. 自己紹介 遠山 晃 所属: 株式会社システナ プログラマ 主にWeb系の開発中心、iOSも少々 『Github使って開発したい!』 https://github.com/vexus2

    最強のPHP統合開発環境 PHPStorm
  • PhpStorm: The PHP IDE by JetBrains

    Explore the PhpStorm IDE for web projects. Get everything you need for PHP, JavaScript, and SQL coding out of the box

    PhpStorm: The PHP IDE by JetBrains
    yamadar
    yamadar 2015/10/01
    良いらしい
  • モダンPHPアンチパターン - Qiita

    アンチパターンなので、見出しの内容はすべてバッドノウハウです。 前に書いたやつ PHPのモダンな開発環境を紹介する - Qiita PHP - Functoolsを作った - Qiita PHPのlist()はタプル展開のための機能 - Qiita 関係ないけどこれも: シェル、ターミナル、コンソール、コマンドライン 追記: 文中でとりあげた「怖い話」について、ちゃんと説明しました PHP - namespaceとBOMに何の関係があるのさ - Qiita ファイルの最後に?>を書く PHPコードは<?phpで始まり?>で締める。それがPHPの常識(キリッ ……そんなことはもう綺麗さっぱり忘れよう。PHPはテンプレートエンジンではあるが、Webアプリケーションを書く上では、もはやテンプレートエンジンとしての機能は求められなくなりつつある。 不要な?>を書いてはいけない理由は明確で、<?p

    モダンPHPアンチパターン - Qiita
    yamadar
    yamadar 2015/09/30
  • [PHP]DateTimeオブジェクトをforeach文で回せるDatePeriodクラス

    [競技プログラミング][PHP][AtCoder]超大型連休 | DevAchieveでDateTimeオブジェクトを for 文で日付を回そうと思ったのだけど、以下のようにとんでもないことになってしまった。 <?php for( $date = DateTime::createFromFormat('Y/m/d', '2012/01/01', new DateTimeZone('Asia/Tokyo')), $end = DateTime::createFromFormat('Y/m/d', '2012/12/31', new DateTimeZone('Asia/Tokyo')); $date->diff($end)->format('%R') === '+'; $date->add(new DateInterval('P1D')) ){ // 2012/01/01 から 2012/1

    yamadar
    yamadar 2015/08/28
  • 三項演算子は可読性を落とすか - Qiita

    しばしば三項演算子やdo-while構文が禁止されているコーディング規約に遭遇する。それは今すぐ撤廃すべきという論理武装を考えてみよう。事例はPHPだが、このことはすべての言語にいえる。 例 あるサービスから何らかのデータを取り出し、それをクライアント側で使うという手続きを考える。 ここで、サービス側のAPIとクライアント側のAPIに仕様ギャップがあったとしよう。$service は古く、うまく行かなかったとき例外ではなく null 的なもの(PHPではもしかするとfalseかもしれない)を返す習慣で作られていた。いっぽう $client は null を入力される想定がない。何もしないで欲しいときは空の array を入力する仕様だった。 以下の実装例を見てほしい。 <?php $data = $service->getSomeData(); if ($data === null ||

    三項演算子は可読性を落とすか - Qiita
  • phpDocumentorの書き方 - Qiita

    phpDocumentorの書き方ってこれ!っていうベストプラクティスがなくて(ドキュメントとはそういうものなのかもしれないけど…)、毎回試行錯誤して、フォーマットを考えるだけでも時間を取られるので、一度自分なりのフォーマットをまとめたいと思います。 今回は、クラスとメソッドについてまとめています。 プロパティについても書いたほうがドキュメントとしてはよいと思うのですが、プロパティまで書き出すとなかなか継続出来ない(ダメ人間です)ので、追々。。 ちなみに、CakePHPをやんわり想定しています。 では、まずクラスについて。 クラス:フォーマット /** * [区分]クラスの概要 * * クラスの詳細 * 出来るだけ細かく書いたほうがよいが、詳細な説明は各メソッドに任せる。 * 全体での共通ルールとか仕様を書く。 * * @access アクセスレベル * @author 名前 <メールアド

    phpDocumentorの書き方 - Qiita
    yamadar
    yamadar 2015/08/04
  • PHPの文字コードではSJISじゃなくてSJIS-win、EUC-JPじゃなくてeucJP-winを | IT女子のお気に入りフォルダ

    ホーム > PHP > PHPの文字コードではSJISじゃなくてSJIS-win、EUC-JPじゃなくてeucJP-winを PHPで使える文字コード変換はmb_list_encodings()を使って確認することができます。 foreach(mb_list_encodings() as $jcode) echo $jcode . '<br>¥n'; 注目するのは「SJIS-win」と「eucJP-win」です。 どっちも「win」が付いているのでおわかりでしょうが、Windows拡張の文字に対応できるようになっています。 つまり、SJISよりもSJIS-winの方が文字が多いということです。 SJIS-winにあってSJISにない文字は、 NEC 特殊文字(13区) NEC 選定 IBM 拡張文字(89~92区) IBM 拡張文字(115~119区) よく使うところでは、以下のような文字

    PHPの文字コードではSJISじゃなくてSJIS-win、EUC-JPじゃなくてeucJP-winを | IT女子のお気に入りフォルダ
  • 【PHP】PHPで機種依存文字を変換する場合は文字コードをSJIS-winにしてから! - Wataame Frog

    PHPCSVファイル取込機能を作成中、機種依存文字である「㈱」を「(株)」(半角カッコ・株・半角カッコ)に変換しようとした時にはまってしまったので、その対策方法を忘備録としてポストします。 機種依存文字を変換する際の文字コードは「SJIS-win」と指定する 上手くいかないこと 作成しているシステムでCSVフォーマット(文字コードはSJIS)のファイルからインポートする機能をつけました。 その時にありがちですが、社名や備考などに含まれている機種依存文字の「㈱」を「(株)」に変換しようとしたら、全然うまく行かない。 シンプルに str_replace() で当てても変換されない始末。 CSVファイル取込・変換の基的な流れは以下の感じ。 CSVファイルをオープン 全体の文字コードを SJIS から UTF-8 に変換 機種依存文字を変換 かなり単純に書きましたが、特に変なことはしていないと

  • ORM + Pagination で、ページネーションする - Qiita

    DBにあるデータを一覧する場合、ページネーションする必要がある。 ORMとPaginationを使用する場合は、以下のような処理の流れになると思う。 ORMデータの総数を取得する(Paginationに渡すため) Paginationインスタンスをforge ORMで現在のページを取得する(Paginationのメソッドからlimitとoffsetを設定) このように、 ORM -> Pagination -> ORM のようにモジュールを使用するので、 以下のようにORMはメソッドチェーンでやると楽。 public function action_index() { // カテゴリ1の総数を取得する。 $query = Model_User::query()->where('category_id', 1); $total_items = $query->count(); // Pagi

    ORM + Pagination で、ページネーションする - Qiita
    yamadar
    yamadar 2015/07/16
    outer join を group_by するときは、rows_offset, rows_limit で絞る。
  • 例えば, Singleton を避ける | Born Too Late

    この記事は TDD Advent Calendar jp: 2011 の 14 日目です. 前日: TDD戦略 -TDDを導入し進化させる方法- #TDDAdventJP (@kyon_mm さん) 翌日: TDDに対して思っていること (@gab_km さん) この記事の概要 TDD で開発することで設計上の問題点に気づきやすくなる Singleton はグローバル変数である Singleton の使用はできる限り避けるべきである テスタビリティを意識しよう TDD では, 原則としてユニットテストを書いてから実際のコードを実装します. なので, 自然と「テストのしやすさ (テスタビリティ)」を意識して実装することになります. そして, TDD においては一般的に, テスタビリティを意識することで, 設計が改善されるとされています. オブジェクト指向には難しい概念がたくさん登場します.

  • PHP5.4におけるシングルトンパターンの実装

    こんばんは。ファガイです。 日はPHP5.4におけるシングルトンパターンの実装に関して書きたいと思います。 これを書こうと思ったのは自分がシングルトンパターンについて調べてた時に、「何かこの実装微妙だよね」とか、思った結果です。 最近書かれるブログでも、ちょっと書かれてる内容が古いな・・・って。ってことで書いてます。 PHP5.4以前のシングルトンパータンの実装に関しては、 絶版になったPHPによるデザインパターン入門のページを閲覧すると良いかと思います。 PHPによるデザインパターン入門 実を言うと、先日書きました、 ReflectionClassについて調べる – 新人Webエンジニアの記録。 が結構参考になりました。 PHP5.4におけるSingleton Patternこんな感じです。traitと、Reflection、遅延静的束縛を必要とします。 trait TraitSing

    PHP5.4におけるシングルトンパターンの実装
    yamadar
    yamadar 2015/07/15
    PHP5.4から導入された trait を使ってる
  • PHP7で変わること - hnwの日記

    次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。 このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つずつ実際に試してみて、その結果を簡単にまとめていました。 今回は発表前の区切りとして、私の書いたPHP7関連の記事・プレゼン資料を一覧形式でまとめなおしてみます。PHPカンファレンス関西2015ではこれらの内容を踏まえつつ、気になる点を重点的にお伝えしたいと考えています。 内部実装のリファクタリング PHP7の目玉と言える、速度改善に関わる内容がほとんどです。 PHP7はなぜ速いのか - Slide

    PHP7で変わること - hnwの日記
  • PHPオブジェクト指向入門(前半) - Qiita

    コンセプト オブジェクト指向プログラミング未経験者~理解を深めたい人、ノンケ~ホモまで幅広くカバーするつもり。多分。 クラスとオブジェクト(初級) 唐突ですが、量産型のロボットの設計・製造について考えてみましょう。 ロボ太郎 ロボ次郎 イラストで初心者を釣る クラス まず、ロボットの設計図を クラス として定義します。設計図をもとにロボットを製造するには、 new 演算子を使います。製造された物体のことを オブジェクト や インスタンス と呼びます。ここではこれらの用語を区別せずに用いることにします。 Yahoo!知恵袋 - オブジェクトとインスタンスの違い

    PHPオブジェクト指向入門(前半) - Qiita
    yamadar
    yamadar 2015/05/10
  • PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。 - こせきの技術日記

    REQUEST_URI と HTTP_HOST PHP のサーバ変数 $_SERVER['REQUEST_URI'] には、ふつうパスとクエリが設定される。 'REQUEST_URI' ページにアクセスするために指定された URI。例えば、 '/index.html' PHP: $_SERVER - Manual ただし、常にパスから始まると保証されているわけではない。以下のように、 GET に続けて絶対 URL を書いたリクエストを送ると、 GET http://localhost/test.php?query=value#fragment HTTP/1.1 Host: localhost $_SERVER['REQUEST_URI'] の値は、 http://localhost/test.php?query=value#fragmentになる。 ポイント: REQUEST_URI は

    PHP の $_SERVER['REQUEST_URI'] と parse_url() の予想外な動作について。 - こせきの技術日記
    yamadar
    yamadar 2015/04/20
    結論に笑った
  • (PHPで)指定ディレクトリ以下を全部チェックしてファイル一覧を取得する方法

    こんにちは。宇都宮です。 「特定ディレクトリ以下のファイル全てに対して処理を行うプログラム」を書く機会というのは、たまにありますね。 「PHP ファイル 再帰的」といったワードで検索すると、色々引っかかります。それぞれ一長一短あります。「特定ディレクトリ以下のファイル全てに対して処理を行うプログラム」の様々な実装例を紹介します。 1. scandir()とis_file()/is_dir()を組み合わせる <?php function getFileList($dir) { $files = scandir($dir); $files = array_filter($files, function ($file) { // 注(1) return !in_array($file, array('.', '..')); }); $list = array(); foreach ($files

    (PHPで)指定ディレクトリ以下を全部チェックしてファイル一覧を取得する方法
    yamadar
    yamadar 2015/04/02
  • はてなブログ | 無料ブログを作成しよう

    オマーン旅行 2024 2024年のゴールデンウィーク前半はオマーンの首都マスカットに旅行に行ってきたのでその旅の記録を書く。 GWにが子どもを実家に連れて帰るとのことで、5日間の自由時間が手に入ったので、ここぞとばかりに海外旅行行きを決めた。 なぜオマーン 5日しかなく、複数国を…

    はてなブログ | 無料ブログを作成しよう
    yamadar
    yamadar 2015/03/31
    “mktime(0,0,0,date("m"),date("d"),date("Y"))”