dev-master
9999999-dev https://github.com/thruthesky/overfameA micro framework which works on nother frameworks.
MIT
The Requires
- php >=5.3.0
by JaeHo Song
framework overframe
A micro framework which works on nother frameworks.
Overframe is a framewhich runs upon other frameworks like codeigniter, laravel, slim, etc., (*1)
κΈ°λ³Έ μ€μΉλ₯Ό ν μ μλλ‘ νλ€. μ€μΉλ₯Ό νλ©΄ config_meta_entity, module_meta_entity λ₯Ό μ€μΉνλ€. config_meta_entity μλ module_meta_entity μλ μ΄λ€ λͺ¨λμ΄ μ€μΉλμλμ§ νμλ₯Ό νκ³ , μ€μΉλ λͺ¨λμ κ²½μ°μλ λ©λ΄λ₯Ό κ΄λ¦¬μ νμ΄μ§μ νμ ν μ μλλ‘ νλ€., (*2)
λ·°(μ€ν¨, ν λ§)κ° νμ μλ λͺ¨λμ κ²½μ°, λͺ¨λ λ΄μμ λͺ¨λ κ²μ λ€ μ²λ¦¬ ν μ μλλ‘ νλ€., (*3)
template() μ νΈμΆ ν λ, ν νλ¦Ώ ν΄λμ λ°μ΄ν°κ° μμΌλ©΄ λͺ¨λ ν΄λμμ ν νλ¦Ώμ μ°Ύλλ€., (*4)
νμ¬ template μ΄ λ·°μ 컨νΈλ‘€λ¬ μνμ νλλ°, μ΄λ₯Ό λ³κ²½νλ€., (*5)
git submodule add https://github.com/thruthesky/overframe, (*6)
λ£¨νΈ ν΄λμ μ€μΉν΄μΌ νλ€., (*7)
* autoload.php κ° μ μλμμ νκΈ° μν΄μλ λ£¨νΈ ν΄λμ μ€μΉλ₯Ό ν νμκ° μλ€.
Since project is not for the public use, we do not use composer/packagist.org
, (*8)
/?module=overframe&action=index
sapcms 1.2 μ κ΄λ¦¬μ μμ΄λλ‘ μ μμ νλ©΄ κ°μ’ λ©λ΄λ₯Ό λ³Ό μ μλ€., (*9)
λͺ¨λ μ μ κ²½λ‘λ μλμ κ°λ€., (*10)
/?module=overframe&action=index
μ€μ§ μ κ²½λ‘λ§ μ¬μ©νλ€., (*11)
μ κ²½λ‘λ‘ μ μνλ κ²½μ° root/overframe/template/sapcms1/sapcms1.php κ° μ€νλλ©° λͺ¨λ μμ μ μ΄ μ€ν¬λ¦½νΈμμ μ§ννλ€., (*12)
λ¨, mode κ° 'ajax' μΈ κ²½μ°μλ root/overframe/model/ajax/Ajax.php μ run() ν¨μκ° λͺ¨λ μμ μ 맑μμ νλ€., (*13)
mode=ajax μΈ κ²½μ° λ¦¬ν΄λλ κ°μ ajax μ΄λ€., (*14)
mode=ajax μΈ κ²½μ°,, (*15)
μ€ν(쿼리)λ₯Ό μν condition κ°μ΄ νμνλ° 'model' μ΄ κ·Έ μνμ νλ€., (*16)
( 2016λ 1μ 25μΌ μ΄μ μλ 'do', 'what' μΌλ‘ νλ€. ), (*17)
model μ 3 κ°μ κ²½λ‘ κ°μ μ (.)μΌλ‘ λΆλ¦¬νμ¬ κ°μ§λ©°, (*18)
μλ₯Ό λ€μ΄ &model=entity.ItemList.collect μ κ°μ΄ νλ©΄, (*19)
autoload.php μ λ°λΌμ μ μ ν namespace μ ItemList.php λ₯Ό λ‘λνκ³ , (*20)
object λ₯Ό μμ±ν λ€μ collect() λ©μλλ₯Ό νΈμΆνλ€., (*21)
λ€μμ http://philgo.org/?module=overframe&action=index&model=entity.crud.collect&entity=philgo_attend μ κ°μ΄ μ μμ ν κ²½μ°,, (*22)
μ€νλλ μ΅μ’ collect() λ©μλμ΄λ€., (*23)
μμ ) root/overframe/entity/ItemList.php μ collect() λ©μλ., (*24)
public function collect() { json_success(array()); }
Overframe unit test is builtin.
It is run on web server not on CLI.
To run the unit test, input this code where ever you want., (*25)
<?php echo runTest(); ?>
κ° framework λ§λ€ μμνμ΄μ§(λ©μΈνμ΄μ§, front page)κ° ν릴 μ μλ€., (*26)
μλμ κ°μ΄ url_action() ν¨μκ° κ° μμ νμ΄μ§ URL μ 리ν΄νλ€., (*27)
<a href="<?php echo url_action(); ?>">HOME</a>
if model name and php class name are the same, then you can simply put
, (*28)
namespace of;
, (*29)
as its namespace and use like below.
, (*30)
new \of\Database();
, (*31)
μλ‘μ΄ framework μ μ μ©νκΈ° μν΄μλ, (*32)
database/DatabaseLayer.php μ user/UserLayer.php λ₯Ό μμ ν΄μΌ νλ€., (*33)
Entity is a group of items that has the same characters.
Entity is a table.
, (*34)
Entity λ νλμ ν
μ΄λΈλ‘μ Entity λ₯Ό μμ±νλ©΄ ν΄λΉ ν
μ΄λΈμ νλμ λ μ½λκ° μμ±λλ€.
κ·Έλ¦¬κ³ κ·Έ λ μ½λ μ 보λ₯Ό Entity->record μ 보κ΄νλ λ°, μ΄κ²μ΄ λ°λ‘ item μ΄ λλ€.
λ€μλ§νλ©΄, κ° entity κ°μ²΄μλ $record private λ³μκ° μλλ°, μ΄κ²μ νλμ ν
μ΄λΈ λ μ½λμ μ 보λ₯Ό κ°μ§λ©° μ΄κ²μ ν΄λΉ entity μ μμ΄ν
μ΄ λλ€.
, (*35)
μ¦, entity λ ν
μ΄λΈμ΄λ©΄μ λ΄λΆμ record λ³μμ νλμ νμ λ΄κ³ μλ€. λ°λΌμ entity κ°μ²΄λ ν
μ΄λΈμ΄λ©΄μ λμμ νλμ λ μ½λλ₯Ό κ°μ§λ€.
, (*36)
λ°λΌμ entity μ κ°μ²΄λ ν
μ΄λΈ μμ
μ ν μ μμΌλ©΄μ λμμ νλμ νμ λν μμ
μ ν μ μλ€.
, (*37)
κ° λͺ¨λΈμλ init.php κ° μ‘΄μ¬νλ©°,, (*38)
overframe μ΄ μμ λ λ, auotoload.php μμ μΈν΄λ£¨λλμ΄ μ€νλλ€., (*39)
λͺ¨λ λͺ©λ‘μ template/model-list/model-list.php μμ μ²λ¦¬λ₯Ό νλ€., (*40)
μ€μΉλ ν΄λΉ λͺ¨λμ install.php μ is_installed, install, uninstall ν μ μ¬μ©ν΄μ μ²λ¦¬ νλ€., (*41)
μ€μΉλ hook_λͺ¨λμ΄λ¦_install() μ νΈμΆνλ―λ‘μ μ¬μ©κ°λ₯νλ€., (*42)
λ°λΌμ μ΄λ€ λ°©μμΌλ‘λ λΆλͺ¨ νλ μμν¬μ ν λ§ λλ 컨νΈλ‘€λ¬μμ "hook_λͺ¨λμ΄λ¦_install()"μ νΈμΆνλ©΄ λλ€., (*43)
μλ² λͺ¨λλ‘ λ°μ΄ν° μ μ‘ λ° νμλ Ajax λ‘ νλ κ²μ΄ μμΉμ΄λ€., (*44)
Ajax κ° μλλ©΄ μμ νμ§λ₯Ό μλλ€., (*45)
κ° λΆλͺ¨ λͺ¨λλ§λ€ Ajax Endpoint λ₯Ό μ 곡ν΄μΌνλ€., (*46)
κ·Έ endpoint script λ κ° model μ controller λΆλΆμ wrapping νμ¬ ajax json λ°μ΄ν°λ₯Ό λ°λ‘ μΆλ ₯νλλ‘ νλ€., (*47)
<?php echo ajax_endpoint()?>&do=νλκ°
ajax_endpoint() λ‘ νΈμΆν μ 보λ, (*48)
Ajax ν΄λμ€κ° λ΄λΉνλ€., (*49)
νμΌ μ λ‘λλ κΈ μ λ‘λλ₯Ό ν λ, ajax λ₯Ό ν΅ν μ²λ¦¬ λ°©λ²μ μ€λͺ νλ€., (*50)
codeigniter3 λ sapcms1.2 μμ Ajax λ₯Ό ν΅ν νΈμΆμΈμ§ μλμ§λ₯Ό νλ³νλ€., (*51)
μ΄ κ²μ HTTP μ λ ₯ λ³μμ action=ajax μ κ°μ΄ λ€μ΄μ€λ©΄ ajax νΈμΆλ‘ μΈμ§νλ€., (*52)
κ·Έλ¬λ©΄ ajax()->run() μ νΈμΆνλ©°, (*53)
κ²°κ΅ μ΄λ Ajax::run() μ νΈμΆνκ² λλλ°,, (*54)
μ΄ λ©μλμμ HTTP μ λ ₯ λ³μ 'do' μ μλ κ°μ λ°νμΌλ‘ ν΄λΉ ν΄λμ€λ₯Ό νΈμΆ νλ€., (*55)
μλ₯Ό λ€μ΄ &do=data μ κ°μ΄ μ λ ₯λλ©΄, (*56)
data()->runAjax() κ° νΈμΆλλ©°, (*57)
&do=philgo_banner μ κ°μ΄ μ λ ₯λλ©΄, (*58)
philgo_banner::runAjax() κ° νΈμΆλλ€., (*59)
λ°λΌμ κ° λͺ¨λΈ λ³λ‘ Ajax μ²λ¦¬ μ½λλ₯Ό μμ± ν μ μλ€., (*60)
2016λ 1μ 25μΌ μ΄νλΆν°λ κΈ°μ‘΄μ "Ajax" λ°©μ 보λ€λ μ’ λ μ μ°ν, (*61)
"Model" μ§μ νΈμΆ λ°©μμ μ¬μ©νλ©°,, (*62)
λν entity/ItemList.php μ collect() λ₯Ό μ¬μ©ν΄μ λ³΄λ€ λ²μ©μ μ΄λ©° μ μ°ν λ°©μμΌλ‘ μ½λ©μ νλ€., (*63)
λͺ¨λ μ²λ¦¬λ template/overframe-index-page μμ νλ€., (*64)
@todo @κ²ν μ΄ template μ view λ‘ λ³κ²½μ΄ λμ΄μΌ ν κ² κ°λ€., (*65)
μ¦, μ€ν¨μ λ³΄μ¬ μ€ λμλ template/overframe-index-page μμ νλ©°, (*66)
λ°μ΄ν° μ‘/μμ μ ajax λ‘ νλ€., (*67)
FORM λ¬Έμ₯μμ νμΌμ μ λ¬νλ λ³μλͺ μ νμ 'userfile' μ΄μ΄μΌ νλ€., (*68)
<input type='file' name='userfile'>
data_node_entity.code λ indexing μ΄ λλ νλμ΄λ©° FORM μ μ λ ₯ λ³μλ‘ λ€μ΄ μμΌ νλ€., (*69)
<input type='hidden' name='code' value='photo'>
νμΌ μ λ‘λ νΌ μ λ ₯ λ³μμ unqiue=1 μ κ°μ΄ μ λ¬λλ©΄ ν΄λΉ code μ λͺ¨λ νμΌμ λ€ μ§μ°κ³ νμ¬ μ λ‘λ λλ νμΌλ§ μ¬λ¦°λ€., (*70)
<input type='hidden' name='unique' value='1'>
gid λ μ λ‘λλλ νμΌμ κ·Έλ£Ήμ λ§νλ€. gid λ₯Ό ν΅ν΄μ κΈμ 첨λΆλλ μ¬λ¬ νμΌμ νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ μ μλ€., (*71)
<input type='hidden' name='gid' value='group-id'>
gid λ μ£Όλ‘ unique_id() λ‘ μμ±νκ±°λ μλ°μ€ν¬λ¦½νΈ λ±μΌλ‘ μμ± ν μ μλ€., (*72)
κΈμ μΈ λ, νμΌ μ λ‘λμμ gid λ₯Ό ν΅ν΄μ μ λ‘λλ₯Ό ν λ€μ, κΈμ μ μ₯ ν λ, gid λ₯Ό "post-123", "comment-456" κ³Ό κ°μ΄ μ²¨λΆ νμΌμ μΆμΆνκ² μ½κ² λ³κ²½νλ€., (*73)
μλ₯Ό λ€μ΄ κΈ λ²νΈκ° 123 μ΄λ©΄, gid κ° "post-123" μΈ κ²μ μ°Ύλλ‘ νλ€., (*74)
<form action="<?php echo sys()->url_ajax_endpoint()?>&do=data&what=file-upload" method="post" enctype="multipart/form-data">
sapcms1.2 λ Drupal8 μ κ²½μ°μλ μ¬μ©μ κ΄λ ¨ κΈ°λ₯μ΄ μ΄λ―Έ λ€μ΄κ° μλ€., (*75)
νμ§λ§ CodeIgniter3 μ κ²½μ° κ·Έλ¬ν κΈ°λ³Έ κΈ°λ₯μ΄ μλ€., (*76)
λ°λΌμ CodeIgniter3 μ κ²½μ° νμ κ·Έλ¬ν κΈ°λ₯μ μΆκ°μ μΌλ‘ λ§λ€μ΄μΌ νλλ°,, (*77)
κ° CodeIgniter3 λ§λ€ λͺ¨λ ν릴 μ μλ€., (*78)
UserLayer.php (λ°μ΄ν°λ μ΄μ΄) λ₯Ό ν΅ν΄μ, (*79)
User::getLogin(), User::getName(), User::getID(), User::getEmail(), User::isAdmin() μ λ©μλλ₯Ό λκ³ , (*80)
μ²λ¦¬λ₯Ό νλ€., (*81)
di( user()->getLogin() ); di( user()->isAdmin() );
λͺ¨λ μ€μΉμ κΈ°λ³Έ μμ λ module/data/install.php μμ μ°Ύμ μ μλ€., (*82)
νμ§λ§ νλμ λͺ¨λμ μ¬λ¬κ°μ entity κ° λ€μ΄κ°λ κ²½μ°μλ, (*83)
module/philgo/install.php μ κ°μ΄ exists() λ₯Ό overriding ν΄μ entity ν μ΄λΈμ λ€λ₯΄κ² μ κ²ν΄μΌ ν νμκ° μλ€., (*84)
<?php namespace of; class Philgo extends Node { public function __construct() { parent::__construct(); } /** * */ public function install() { $attend = node('philgo_attend'); $attend->init(); $attend->addColumn('user_id', 'varchar', 64); $attend->addColumn('date', 'int'); $attend->addUniqueKey('user_id,date'); } public function uninstall() { $attend = node('philgo_attend'); $attend->uninit(); } public function exists( $tablename = null ) { $attend = node('philgo_attend'); $tablename = $attend->getTableName(); return parent::exists($tablename); }
A micro framework which works on nother frameworks.
MIT
framework overframe