0

CSV を操作するデータ ソースを作成しようとしています。私はこの例に従っています

connections.php:

Connections::add('csv', [
        'type' => 'file',
        'adapter' => 'Csv',
    ]
);

アプリ/拡張機能/アダプター/データ/ソース/ファイル/Csv.php

namespace app\extensions\adapter\data\source\file;

use lithium\core\Libraries;

class Csv extends \app\extensions\adapter\data\source\File {

    public function __construct(array $config = []) {
        $defaults = [
            'delimiter' => ',',
            'enclosure' => '\"',
            'escape' => '\\',
            'path' => Libraries::get(true, 'resources') . '/file/csv',
        ];
        $config += $defaults;
        parent::__construct($config);
    }

    public function read($query, array $options = array()) {
        print_r($query);
        die();
    }
}

アプリ/拡張機能/アダプター/データ/ソース/File.php

<?php

namespace app\extensions\adapter\data\source;

use lithium\core\Libraries;

class File extends \lithium\core\Object {
    public function __construct(array $config = array()) {
        $defaults = array(
            'encoding' => 'UTF-8',
            'path' => Libraries::get(true, 'resources') . '/file'
        );
        parent::__construct($config + $defaults);
    }
}

?>

アプリ/モデル/Importers.php

<?php

namespace app\models;

class Importers extends \lithium\data\Model {
    protected $_meta = [ 
        'connection' => 'csv',
    ];
}
?>

コントローラーから呼び出すたびにImporters::find('all');、エラーが発生します。 Fatal error: Call to undefined method app\extensions\adapter\data\source\file\Csv::configureClass() in ...

を定義するconfigureClass()と、定義されていないという別のエラーが表示enable()されます。ここで何が間違っているのかよくわかりません。

4

1 に答える 1

0

私が間違っている場合は修正してください。ただしFile、抽象クラス\lithium\data\Sourceを拡張する必要があるようです\lithium\core\Object

したがって、次のapp/extensions/adapter/data/source/File.phpようになります。

class File extends \lithium\data\Source {

以下は Source.php のコメントです。

/**
 * This is the base class for Lithium's data abstraction layer.
 *
 * In addition to utility methods and standardized properties, it defines the implementation tasks
 * for all Lithium classes that work with external data, such as connections to remote resources
 * (`connect()` and `disconnect()`), introspecting available data objects (`sources()` and
 * `describe()`), and a standard read/write interface (`create()`, `read()`, `update()` and
 * `delete()`).
 *
 * Subclasses may implement any other non-standard functionality, but the above methods define the
 * requirements for interacting with `Model` objects, and other classes within `lithium\data`.
 */

それが誰かを助けることを願っています(私が間違っていなければ:))。このフレームワークが大好きです!

于 2013-06-19T09:27:19.453 に答える