Coder Social home page Coder Social logo

kenjis / codeigniter-tettei-apps Goto Github PK

View Code? Open in Web Editor NEW
28.0 8.0 18.0 4.01 MB

『CodeIgniter徹底入門』のサンプルアプリケーション(CodeIgniter v3.1版)

HTML 0.47% CSS 1.04% JavaScript 0.07% PHP 97.46% Shell 0.11% Hack 0.08% Twig 0.75%
codeigniter phpunit codeception twig codeigniter3 selenium hacktoberfest

codeigniter-tettei-apps's Introduction

『CodeIgniter徹底入門』のサンプルアプリケーションをCodeIgniter 3.xにアップデート

Scrutinizer Code Quality Coverage Status Build Status

現在、CodeIgniterの開発は4.xに移っています。CodeIgniter4にアップグレードした、https://github.com/kenjis/ci4-tettei-apps を参照してください。

ここは『CodeIgniter徹底入門』(翔泳社)に含まれている以下のサンプルアプリケーション(CodeIgniter 1.6.1用)をCodeIgniter 3.xで動作するように更新したものです。

  • コンタクトフォーム(7章)
  • モバイル対応簡易掲示板(8章)
  • 簡易ショッピングサイト(9章)

CodeIgniter 3.xで動作するように更新し、少しリファクタリングしました。

動作確認環境

アプリ

  • PHP 7.4.15
    • Composer 1.10.19 (Composer 2.0ではCli for CodeIgniterが動作しません)
  • MySQL 5.7

受入テスト

  • Selenium Server 3.141.59
  • geckodriver 0.29.0
  • OpenJDK 15.0.1

書籍のコードからの変更点

  • CodeIgniter 3.1.11に対応(CodeIgniter本体は CodeIgniter Composer Installer によりComposerでインストール)
  • フォルダ構成を変更し、Web公開領域をpublicフォルダ以下に限定
  • CodeIgniterでComposerを利用可能に設定
  • ISO-2022-JPのメールは作成できなくなったのでUTF-8に変更
  • CSRF対策を独自実装からCodeIgniterの自動保護に変更
  • Codeception/Seleniumによる受入テストの追加 tests/acceptance
  • PHPUnitによるアプリケーションテストの追加 application/tests
  • データベースマイグレーションの追加 application/database/migrations
  • 掲示板
    • コントローラでの文字エンコード変換ができなくなったのでフックのpre_systemに移動
  • ショッピング
    • categoryproductテーブルのSeederを追加 application/database/seeds
    • キーワード検索をGETメソッドを使うように変更
    • メール本文の作成をテンプレートパーサクラスを使うように変更
    • クラスの分割
    • MY_Controllerの追加
    • ビューにTwigを利用
    • XSS脆弱性の修正
  • リファクタリング
    • ビューのコーディングスタイルを統一し、HTMLエスケープを徹底

追加されたComposerのパッケージ

インストール方法

ダウンロード

https://github.com/kenjis/codeigniter-tettei-apps/archive/develop.zip をダウンロードし解凍します。

Apacheの設定

codeigniter-tettei-apps/publicフォルダが公開フォルダです。ここを http://localhost/CodeIgniter/ でアクセスできるように設定してください。

例えば、以下のようにApacheのhtdocs以下にシンボリックリンクを張ります。

$ cd /paht/to/Apache/htdocs/
$ ln -s /path/to/codeigniter-tettei-apps/public/ CodeIgniter

なお、.htaccessによるmod_rewriteの設定を有効にしてください。

ファイルのパーミッション設定

必要な場合は、以下のフォルダにApacheから書き込みできる権限を付与してください。

$ cd /path/to/codeigniter-tettei-apps/
$ chmod o+w application/logs/
$ chmod o+w application/cache/
$ chmod o+w public/captcha/

依存パッケージのインストール

Composerで依存パッケージをインストールします。

$ php composer.phar self-update
$ php composer.phar self-update --1
$ php composer.phar install --no-plugins

Note

パッケージをupdateする場合

$ php -d memory_limit=-1 composer.phar update --no-plugins

データベースとユーザの作成

MySQLにデータベースとユーザを作成します。

CREATE DATABASE `codeigniter` DEFAULT CHARACTER SET utf8mb4;
GRANT ALL PRIVILEGES ON codeigniter.* TO username@localhost IDENTIFIED BY 'password';

データベースマイグレーションとシーディングの実行

データベースにテーブルを作成し、テストデータを挿入します。

$ php cli migrate
$ php cli seed

テストの実行方法

PHPUnitによるアプリケーションテスト

$ composer test

テストカバー率のレポートはbuild/coverageフォルダに作成されます。なお、カバー率の集計にはXdebugが必要です。

Note

RuntimeException: Cannot modify header information - headers already sent by (output started at .../vendor/phpunit/phpunit/src/Util/Printer.php:113) on line 350 ... のようなエラーが出る場合

$ vendor/bin/phpunit -c application/tests/ --stderr

Codeception/Seleniumによる受入テスト

https://www.mozilla.org/ja/firefox/new/ よりFirefoxをダウンロードしインストールします。

Homebrewからselenium-server-standaloneとgeckodriverをインストールします。

$ brew install selenium-server-standalone
$ brew install geckodriver

Seleniumサーバを起動します。

$ selenium-server -port 4444

受入テストを実行します。

$ sh acceptance-test.sh

Note

geckodriverが開けない場合は、一度Finderからgeckodriverを右クリックして開いてください。

参考: mozilla/geckodriver#1629 (comment)

参考

書籍のコードほぼそのままでCodeIgniter 3.0.0に対応したものを見たい場合は、masterブランチをご覧ください。

また、具体的な変更点は以下をご覧ください。

ライセンス

サンプルアプリケーションのライセンスは「修正BSDライセンス」です。詳細は、docs/license-codeigniter-tettei-1.4.txt をご覧ください。

謝辞

サンプルアプリケーションのデザインは、神野みちるさん(株式会社ステップワイズ)にしていただきました。

『CodeIgniter徹底入門』について

codeigniter-tettei-apps's People

Contributors

kenjis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codeigniter-tettei-apps's Issues

検証ルールは設定ファイルにした方がよいのではないか?

Shopにおける値の検証が、ライブラリ

https://github.com/kenjis/codeigniter-tettei-apps/blob/03cd554c22a1600f9b5c94582e3671ca07a26a6f/application/libraries/Shop_validation.php

になっているが、公式マニュアルに従って

http://www.codeigniter.com/user_guide/libraries/form_validation.html#saving-sets-of-validation-rules-to-a-config-file

設定ファイルに書くほうが、初心者に優しいのではないか?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.