Saturday, July 30, 2011

PHP SimpleCsv - Treating CSV Files as Objects

<?php
/**
 * File: SimpleCsv.php
 * Author: Rumverse
 * Copyright: 2011 Rumverse
 * Date: 7/30/2011
 * Link: http://ulaptech.blogspot.com
 * Package: Simple Objects
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details:
 * http://www.gnu.org/licenses/gpl.html
 *
 */
class SimpleCsv
{
    const LINECHARS  = 1000;
    protected $_filename;
    protected $_resource;
    protected $_data;
    protected $_dataMap = array ('field1',
                                 'field2',
                                 'field3',
                                 'field4',
                                 'field5');
    public function __construct($filename)
    {

        $this->loadFile($filename);

    }
    public function loadFile($filename, $accessMode = "r+")
    {
        $this->refresh();

        if (!empty($filename) && is_file($filename)) {

            $this->_filename = $filename;
            $this->_resource = fopen($filename, $accessMode);

        }
        return $this;

    }
    public function refresh()
    {

        $this->_filename = null;
        $this->_resource = null;
        $this->_data = null;

    }
    public function getArrayData($limit = null)
    {
        if (!empty($this->_data) && is_array($this->_data)) {

            return $this->_data;

        } else {

            if (!empty($this->_resource) && is_resource($this->_resource)) {

                while (($data = fgetcsv($this->_resource, self::LINECHARS, ",")) !== FALSE) {

                    if (!empty($this->_dataMap)) {

                        $this->_data[] = array_combine($this->_dataMap, $data);

                    } else {

                        $this->_data[] = $data;

                    }
                }
                fclose($this->_resource);
                return $this->_data;
            }
        }

        return false;
    }
    public function getJsonData($limit = null)
    {

        if (empty($this->_data) || !is_array($this->_data)) {

            $this->getArrayData($limit);
        }

        return json_encode($this->_data);
    }
}
  • Related Links Widget for Blogspot

No comments: