CakePHPVer3開発日記

CakePHP開発日記

   表題のように最近Ver3のcakePHPがでた。 その関連の本が、今までVER2で出ていたがこれが古くなったわけである。 ちょっと本屋で見たのでしばらくこれの開発から目を離していたが、今回の改訂でどのくらいの変化が生じたのか検討してみた・・・本の名は、「CAKEPHP3 PHPフレームワーク入門」となっている。  実は、これは、同じ名匠でCAKEPHP2.1]として、数年前に発行されている本と内容は並列で書かれて俺ウことが良く分かる。 

   比較しながら見ていると、かえって良く分かる。 今回驚くことに、CAKEPHPを、DLして、今まで見たいにPCに入れることが出来なくなってきている。 それは、DLは、COMPOSERによって行われるようになっているからである。 

   さて、COMPOSERとは、なんであるか:これは、「composerとはPHPのパッケージ管理システムである。」によく出ている。 composerを使えば、コマンド一発で必要なパッケージをすべてインストールできる。・・・確かにこれを使うと驚くほど色々なプログラムが、CAKEPHP3として、一括DLできた・・・驚くほど時間はかかるが、手間は、COMPOSERをInstallして、クリックするだけだけでDLをやってくれるからである。

   とはいっても、今までの賭けPHPXXを、DLしていた自分には、何かどうなるのだろうといった感じがしたが、やってみると何もしないでDLが進み、後はそれで動作するようになったのには驚かされたわけである。 便利な時代というか、驚きでもある。

   さて、関連の本で、もう一つ大きな変更に驚かされた・・・それは、app/controller,model,viewといったファイル構成が変化してしまっていることである。今回は、src/controller,model,view などといった構成になっているのである。 ということは、今までの旧来の方式で作っていた頁はそのままの形では、動作しないこととなり、またファイルの入れ替えが必要になるわけでもある。

   こう考えると、誰かの話のように、小さなHPだけの頁では、こうしたframeworkを利用する手間を考えると、利用するメリットは小さくなるのかもしれない・・・まあ、おおきなsystemで動作している方々も、VERSION UP をするとなると、かなりの手間トなるので、そのまま古いVERデ利用してゆくほうが、効率的なのかもしれない・・・

また、

<?php

namespace App\Controller;

class HelloController extends AppController{  ・・・・

 というように、名前空間を指定するようになってきている。 これらは、JSでも何でも荘であるが、CLASSが、多くなるとライブラリー同士で競合したりして動作がおかしくなるのを避けるための方法で、時代の流れとも言える。

databaseについて

DATABASEを作ろうとしてSQL managerを起動したら、動かない・・・しばらく検討要する・・・そこで、database設定ファイルの方を優先させる。

以下のようなものがある。

<?php
/**
* This is core configuration file.
*
* Use it to configure core behaviour of Cake.
*
* PHP 5
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Config
* @since CakePHP(tm) v 0.2.9
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
/**
* In this file you set up your database connection details.
*
* @package cake.config
*/
/**
* Database configuration class.
* You can specify multiple configurations for production, development and testing.
*
* datasource => The name of a supported datasource; valid options are as follows:
* Database/Mysql - MySQL 4 & 5,
* Database/Sqlite - SQLite (PHP5 only),
* Database/Postgres - PostgreSQL 7 and higher,
* Database/Sqlserver - Microsoft SQL Server 2005 and higher
*
* You can add custom database datasources (or override existing datasources) by adding the
* appropriate file to app/Model/Datasource/Database. Datasources should be named 'MyDatasource.php',
*
*
* persistent => true / false
* Determines whether or not the database should use a persistent connection
*
* host =>
* the host you connect to the database. To add a socket or port number, use 'port' => #
*
* prefix =>
* Uses the given prefix for all the tables in this database. This setting can be overridden
* on a per-table basis with the Model::$tablePrefix property.
*
* schema =>
* For Postgres specifies which schema you would like to use the tables in. Postgres defaults to 'public'.
*
* encoding =>
* For MySQL, Postgres specifies the character encoding to use when connecting to the
* database. Uses database default not specified.
*
* unix_socket =>
* For MySQL to connect via socket specify the `unix_socket` parameter instead of `host` and `port`
*/
class DATABASE_CONFIG {

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);

public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
}

ここで必要なのは、この部分だけ・・・SQLITEで作業するので、修正する。

class DATABASE_CONFIG {

public $default = array(
'datasource' => 'Database/Sqlite',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);

/** public $test = array(
* 'datasource' => 'Database/Mysql',
* 'persistent' => false,
* 'host' => 'localhost',
* 'login' => 'user',
* 'password' => 'password',
* 'database' => 'test_database_name',
* 'prefix' => '',
* //'encoding' => 'utf8',
* );

*/

 

以上のように すると、Cake is able to connect to the database. と表示されてDBが利用できるようになっている。 一応ここまで成功・・・

20170226 今日は、いよいよdatabaseを利用する段階へ・・しかしあまり利用したことのないsqlite乗りようが例示されている。 色々、sqlite要のプログラムを見ても良いのが見つからない。そして何よりも、XPで運用していると古いせいか、せっかくDLしたものがエラーとなって動かない!

そこで色々やった結果、command line で動作させようということになる。 

SQLiteコマンドラインツールのダウンロードとインストール (https://www.dbonline.jp/sqliteinstall/install/index1.html)が、紹介されているのでこれをDLして、sqliteだけ動くようになる。 しかし細かいことは書いてないので、細部は、SQLITE入門 西沢直木著というので、調査。

これで一応動作するようになる。 しかしいずれでもbrowsaで見たいので、調べてみると、日本語もよく扱えるものがあったのでこれを利用する。 

SQLite ControlCenter 日本語版 というもので、ここから(http://www.takke.jp/soft/sqliteccj.html)DL出来る。 それを起動して、咲きに作っておいた頁にACCESSしてみると、ようやく表示された・・・意外と、SQLITEは、XAMPPなどに慣れていても、利用しにくい感じである・・・下にその例を載せておきましょう・・・

 

 

続く・・・・・

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\monoda>c:\pg\sqlie3\sqlite_data\mydata.sqlite3
指定されたパスが見つかりません。

C:\Documents and Settings\monoda>cd c\sqlite3
指定されたパスが見つかりません。

C:\Documents and Settings\monoda>cd c:pg\sqlite3
指定されたパスが見つかりません。

C:\Documents and Settings\monoda>cd c:\pg\sqlite3

C:\pg\sqlite3>mydata.sqlite3
'mydata.sqlite3' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\pg\sqlite3>sqlite3 mydata.sqlite3
SQLite version 3.17.0 2017-02-13 16:02:40
Enter ".help" for usage hints.
sqlite>

コマンドラインでの作業は、以上・・・

 

sqlite> create table boards (id integer,name varchar(255),title varchar(255),con
tent text, primary key(id);
Error: near ";": syntax error

n

 

 

 

 

▲ページの先頭へ