[xml/php/inż] Prosty opis dla frameworka - podoba się??

0

Witajcie,
czy taki kod

<?xml version="1.0" encoding="utf-8" ?>
<!--
Moduł aFRM
Parametry:
	name - nazwa modułu (wymagana)
	version - wersja modułu w postaci DDMMRR albo "devel" (wymagane)
	description - opis modułu (wymagane)
-->
<module name="news" version="devel" description="News system module">
	<!--
	Autor modułu
	Parametry:
		name - Nazwa autora (wymagane)
		email - Adres email (wymagane)
		website - Strona WWW autora (opcjonalne)
	-->
	<author name="Amadeusz Jasak" email="[email protected]" website="http://alfanick.biz" />
	<!--
	Akcje obsługiwane przez moduł
	-->
	<actions>
		<!--
		Akcja modułu
		Parametry:
			on - Zdarzenie obsługiwane przez moduł - render, error, display, none (wymagane)
			name - Nazwa akcji (wymagane przy on="display")
			handler - Funkcja lub metoda klasy obsługująca akcję (wymagane)
			template - Szablon przypisany do akcji (opcjonalne)
			uri - Szablon adresu URI w postaci /%zmienna1/%zmienna2=domyslne/%zmienna3/ (opcjonalne)
		-->
		<action on="display" name="display" handler="%(HANDLER_CLASS)::actionDisplay" template="default" uri="/%id/%name/" />
		<action on="display" name="list" handler="%(HANDLER_CLASS)::actionList" template="page" uri="/%page/%order=ASC/" />
		<action on="error" handler="%(HANDLER_CLASS)::onError" template="error" />
	</actions>
	<!--
	Szablony modułu
	-->
	<templates>
		<!--
		Szablon
		Parametry:
			name - Nazwa szablonu (wymagane)
			file - Plik szablonu (wymagane)
			type - Typ szablonu - content, list, error, header, other (opcjonalne)
		-->
		<template name="default" file="%(MOD_DIR)/templates/news.tpl" type="content" />
		<template name="page" file="%(MOD_DIR)/templates/page.tpl" type="list" />
		<template name="error" file="%(MOD_DIR)/templates/error.tpl" type="error" />
	</templates>
	<!--
	Zależność modułu od innych
	Parametry:
		on - Nazwa modułu (wymagane)
		version - Wersja modułu (opcjonalne)
		by - Zależność - tables, logic, files, all (wymagane)
	-->
	<depends on="users" by="tables" />
	<!--
	Tabele modułu
	-->
	<tables>
		<!--
		Tabela
		Parametry:
			name - Nazwa tabeli (wymagane)
		-->
		<table name="news_categories">
			<!--
			Pole tabeli
			Parametry:
				name - Nazwa pola (wymagane)
				type - Typ pola - zgodne ze SQL, w nawiasie opcjonalny rozmiar (wymagane)
				key - Klucz tabeli (opcjonalne)
				increment - Pole autoinkrementowane (opcjonalne)
				table - Relacja pola przez ID innej tabeli
			-->
			<field name="ID" type="int" key="primary" increment="db" />
			<field name="title" type="varchar" />
			<field name="description" type="text" />
		</table>
		<table name="news_sources">
			<field name="ID" type="int" key="primary" increment="db" />
			<field name="title" type="varchar" />
			<field name="description" type="text" />
			<field name="link" type="varchar" />
		</table>
		<table name="news_contents">
			<field name="ID" type="int" key="primary" increment="db" />
			<field name="title" type="varchar" />
			<field name="date" type="timestamp" />
			<field name="author" type="int" table="news_authors" />
			<field name="category" type="int" table="news_categories" />
			<field name="source" type="int" table="news_sources" />
			<field name="short_content" type="text" />
			<field name="long_content" type="longtext" />
		</table>
		<table name="news_authors">
			<field name="ID" type="int" key="primary" increment="db" />
			<field name="user" type="int" table="users_profiles" />
		</table>
		<table name="news_comments">
			<field name="ID" type="int" key="primary" increment="db" />
			<field name="content" type="int" table="news_contents" />
			<field name="date" type="timestamp" />
			<field name="username" type="varchar" />
			<field name="email" type="varchar" />
			<field name="website" type="varchar" />
			<field name="spam" type="int" />
			<field name="comment" type="text" />
		</table>
	</tables>
</module>

podobałby by się wam jako opis modułu dla frameworka dla PHP 5. Z tego XML generowane są (jednokrotnie przez skrypt w Pythonie) wszystkie pliczki PHP (a także kod SQL potrzebny do utworzenia tabel i korzystania z nich) - warstwa obsługi danych (klasa rekordu, klasa rekordów - iterator, klasa poleceń - Insert, Update, Select, Delete, Exists, Count, dodatkowa abstrakcja przez adoDB), szablony (Smarty), zarysy logiki i zarysy handlera (w pełni sprawne akcje - ale nie mające co robić, obsługują szablony)... Czy taki framework ma szanse powodzenia, czy ten plik XML dobrze opisuje moduł frameworka?? Dodam jeszcze, że będzie dołączone <installer> które obsługuje podstawowe operacje na plikach (kopiowanie, usuwanie, tworzenie itp...), podstawę bazy danych (instalacja tabel itp..), ochronę plików (.htaccess) i ich modyfikację (wyrażenia regularne). Całe framework w założeniach będzia bardzo szybki, gdyż plik XML będzie wykorzystywany tylko do utworzenia zarysu modułu, potem nie będzie potrzebny - można go wyrzucić - zostanie sam kod PHP, obsługujący wszystko.

0

Łał. Naprawdę wydaje się miłą sprawą. Choć frameworków jest w PHP jak mrówków i nie wiadomo czy ten odniesie jakiś sukces, o tyle widzę fajne rozwiązanie, jakim jest właśnie plik opisujący moduł. Chyba coś takiego widzę po raz prawie pierwszy (coś mi majaczy o PRADO, tam coś takiego podobnego nie było? ale tam to się w ogóle kontrolki wstawialo na estronę i to jak ASP.NET wyglądało).

Trochę mi te schematy bazy danych się tak średnio podobają. Jak już nowoczesność, to może mapowanie relacyjno-obiektowe? I dlaczego skrypt w Pythonie, skoro to framework w PHP? Nie każdy programista PHP ma interpreter Pythona (no bo i po co?). I z tego nie wynika, czy jest rozdzielenie modelu, widoku, kontrolera? Bo chyba implementacja wzorca MVC to teraz podstawa we wszystkich frameworkach od czasu Ruby on Rails.

Wydaje się fajniutkie. Jak by się rozwinęło, to przy następnym projekcie może bym spróbował (o ile wcześniej nie porzucę PHP na rzecz ASP.NET).

0

@Ktos: Dzięki, za te słowa. To jest wstępny projekt XML, jestem otwarty na wszystkie propozycje. Oczywiście, że będzie wzorzec MVC ale nieco uproszczony (logika, handler, szablony, dao), żeby inni programiści mogli się w tym wszystkim połapać (poza tym pełne wsparcie dla PHPDoc).. Co do baz danych - otóż jest mapowanie relacyjno-obiektowe - atrybut table (a jest to także znacznie uproszczone). A dlaczego w Pythonie?? Python ma bardzo miłą obsługę XMLa i poza tym znacznie szybciej pisze się kod tego typu generatora w Pythonie niż w PHP

1 użytkowników online, w tym zalogowanych: 0, gości: 1