Форум → Программирование → PHP для идиотов → Экспорт в .csv
Экспорт в .csv
Страницы: ← Предыдущая страница →
-
1 октября 2010 г. 1:41, спустя 21 минуту 48 секунд
Можно сделать что-то наподобие github, только зачем?https://smappi.org/ - платформа по созданию API на все случаи жизни -
1 октября 2010 г. 1:42, спустя 1 минуту 13 секунд
даешь обретку! :D
мне дайте тоже, а?Сапожник без сапог -
3 октября 2010 г. 20:20, спустя 2 дня 18 часов 37 минут
Обретка для чтения. Как и обещал. Если понадобится ее развивать - буду развивать.<?php
class Csv {
private $_file = NULL;
private $_array = array();
private $_det = '';
public function __construct ($filename, $det = ',', $length = 0) {
$this->_file = $filename;
$file = fopen($filename, 'r');
if ($file === false) throw new Exception ('File not exists: ' . $filename);
$this->_det = $det;
$row = fgetcsv($file, $length, $det);
$row = array_map('trim', $row);
if ($row === false) throw new Exception ('Wrong CSV file.');
while (($data = fgetcsv($file, $length, $det)) !== FALSE) {
$this->_array[] = array_combine($row, $data);
}
unset ($data);
fclose($file);
}
public function read ($id = false) {
if ($id === false) {
return $this->_array;
} else {
return $this->_array[intval($id)];
}
}
} -
3 октября 2010 г. 20:25, спустя 4 минуты 49 секунд
старайся писать минимум кода в конструктореСпустя 54 сек.кроме того fopen кинет ворнинг если файла нету. Проверяй is_file или file_exists перед открытием -
3 октября 2010 г. 20:26, спустя 59 секунд
Абырвалг, ну если только вынести весь конструктор в отдельную функцию.Спустя 24 сек.Абырвалг, по второму. Угу. Точно. -
3 октября 2010 г. 20:28, спустя 1 минуту 50 секунд
SpartakuS, exceptions юзай чтобы твоим классом можно было юзатьсяСапожник без сапог -
3 октября 2010 г. 20:28, спустя 11 секунд
unset ($data);
а нужно ли это? пхпшный gc думаю сам почистит память, у переменной локальная область видимости
и че будет, если одна строка окажется хуевой? ну, не будет хватать значений или будут лишние? array_combine поперхнется) -
3 октября 2010 г. 20:28, спустя 27 секунд
и да, в конструкторе нельзя делать логику идеологическиСапожник без сапог -
3 октября 2010 г. 20:30, спустя 1 минуту 30 секунд
зачем сохранять имя файла и разделитель, если все равно их потом никак не получить из объекта (геттера нет и они приватные) и они все равно нигде не используются?Спустя 16 сек.code review на пiха.ру -
3 октября 2010 г. 20:39, спустя 9 минут 11 секунд
<?php
class Csv {
private $_file = NULL;
private $_array = array();
private $_det = '';
private $_length = 0;
public function __construct ($filename, $det = ',', $length = 0) {
$this->_file = $filename;
$this->_det = $det;
$this->_length = $length;
$this->_open();
}
public function read ($id = false) {
if ($id === false) {
return $this->_array;
} else {
return $this->_array[intval($id)];
}
}
private function _open () {
if (!file_exists($this->_file)) throw new Exception ('File not exists: ' . $this->_file);
$file = fopen($this->_file, 'r');
$column = fgetcsv($file, $this->_length, $this->_det);
if ($column === false) throw new Exception ('Wrong CSV file.');
$column = array_map('trim', $column);
$numColumns = count($column);
while (($data = fgetcsv($file, $this->_length, $this->_det)) !== FALSE) {
if ($numColumns !== count($data)) throw new Exception ('Wrong CSV file.');
$this->_array[] = array_combine($column, $data);
}
fclose($file);
}
} -
3 октября 2010 г. 20:46, спустя 7 минут 11 секунд
как вариант - в read смотреть - парсили ли мы файл или нет. Если не читали - вызывать openСпустя 168 сек.вообще такую простую ебатню я бы писал либо просто функцией либо методом какого-то хелпера -
3 октября 2010 г. 20:51, спустя 4 минуты 43 секунды
Абырвалг, не. В моей задачи подобное кеширование нахуй не нужно. Ибо там не больше одного файла. А если понадобится, то сделаю.
Спасибо за код ревью, мужики с большими яйцми :).Спустя 114 сек.SpartakuS, exceptions юзай чтобы твоим классом можно было юзаться
не очень понял. throw new CsvExeption();???Спустя 119 сек.вообще такую простую ебатню я бы писал либо просто функцией либо методом какого-то хелпера
тут дело в расширяемости. Понадобится мне сделать запись в в цсв. Добвлю метод и готово.
Страницы: ← Предыдущая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!