Search
Write a publication
Pull to refresh

Каждому классу — свой файл

Reading time2 min
Views695
Есть класс, который содержит пару десятков функций, которые можно сгрупировать в 3-4 группы по назначению. Мне бы было удобно если эти группы функций вынести в отдельные файлы, но при этому не потерять структуру класса, чтобы класс отсался классом. Мне надоело скролить длинные файлы с классами.

Т.е. я хочу чтобы один и тот же класс был представлен несколькими файлами:
power_class.php
power_class_g1.php
power_class_g2.php
power_class_g3.php


Как это реализовать граммотно?

1. У меня есть один класс, на котором построен сайт. В этом классе есть общие функции, а есть индивидуальные для каждого раздела. Мне не хочется под каждый раздел писать классы. Мне было бы удобнее из этого класса вынести функции по файлам. Плодить классы тоже геморой.

2. У меня стоит Zend Studio мне не нравится эта концепция сворачивания классов, разворачивания. Все эти IDE редакторы морально устарели. В крупных проектах приходится скакать по папкам и файлам, как спортсмен, открывать десятки файлов и прочий геморой.

Я бы вообще сделал так: каждая функция это файл. А потом чтобы это собиралось как-то автоматически в один или несколько файлов и заливалось на сервак… Или например вообще в реляцонных БД хранить функции… но это уже другая песня.

Хотел бы чтобы редакторы могли виртуально собирать нужные сейчас функции в одно окно редактирования. Например, 1 функцию из файла x.php, другую из файла z.php, одну функцию из класса такого-то другую из другого…

3. Мне кажется, что мышление программиста сдерживают файловая система и концепция тектовых редакторов. Мы мыслим на уровне папочек и файлов, в то время как давно существуют базы данных.

Например, выбрать функции с названием Convert в крупном проекте — это нужно ждать когда поиск обойдет все папки и файлы, а если это на удаленном сервере — то пиши все пропало. А потом если попробовать их отредактировать — это значит открыть десять файлов с десятью окнами…

РЕШЕНИЕ

Я вижу такое решение своей задачи.

1. Вызывается функция, которая собирает класс из нескольких файлов в один файл class_power.php
действует просто как шаблонизатор
function compile_class(){
}

2. Затем инклудится сгенерированный class_power.php
3. Структура класса, который собирается в class_power.php
class_main.php — файл, в котором описана структура класса
Class PowerClass
{
var $var1;
#class_part1.php#
#class_part2.php#
#class_part3.php#
}

class_part1.php — часть класса в виде набора функций
class_part2.php — часть класса в виде набора функций
class_part3.php — часть класса в виде набора функций

Таким образом можно собирать несколько файлов с одинаковыми функциями, что мне видится может быть также полезным.

Еще одно решение:

function load_mclass($class="power_class"){
$res[]="class $class{\n";
foreach(glob($class."*") as $c)
$res[]=удалить "<?php", строку "class $class{", завершающий "}", "?>" из file_get_contents($c);
$res[]="\n}";
записать $res в файл $class.m.php
подключить $class.m.php
}


Нужно это для того, чтобы не тратить свое время на скролинг по длинному файлу, а также чтобы группировать функции связанные по смыслу или назначению, и при этом не терять структуру класса.
Tags:
Hubs:
Total votes 5: ↑1 and ↓4-3
Comments5

Articles