A estrutura do AIS foi projetada para ser simples e eficiente, permitindo que os desenvolvedores criem rapidamente e implantam aplicativos. Sua arquitetura promove um código limpo e sustentável, tornando -o uma ótima opção para iniciantes e desenvolvedores experientes que procuram uma solução robusta e escalável.
Clone, então use:
git clone https://github.com/titan2420/ais.git
A arquitetura do AIS foi projetada com simplicidade em sua essência. Essa simplicidade facilita uma compreensão intuitiva do sistema, facilitando a interação e a modificação da estrutura dos desenvolvedores. Ao minimizar a complexidade, o AIS garante que os desenvolvedores possam se concentrar mais no desenvolvimento de recursos do que em lutar com a própria estrutura.
---- app
-------- core
-------- controller
-------- model
-------- view
---- public
-------- js
-------- css
-------- img
Na estrutura do AIS, as rotas são definidas usando uma pasta direta e estrutura de arquivos na pasta do controlador. Cada pasta representa um segmento de rota em potencial e cada arquivo nessas pastas pode ser acessado como um ponto final. Por exemplo:
---- app
-------- controller
------------ home.php (Accessible via /)
------------ user
---------------- home.php (Accessible via /user/)
---------------- transactions.php (Accessible via /user/transactions)
---------------- edit-profile.php (Accessible via /user/edit-profile)
Essa estrutura permite fácil mapeamento de URLs para seus controladores e visualizações correspondentes, simplificando o processo de roteamento.
Há um middleware, pré -processamento e arte pós -processo no AIS para impedir a duplicação de código e tornar o código mais sustentável.
Dê uma olhada neste exemplo:
---- app
-------- controller
------------ home.php
------------ middleware.php
------------ user
---------------- home.php
---------------- preprocess.php
---------------- postprocess.php
Quando o cliente chegar a /user/ , as seguintes etapas serão tomadas:
controller/middleware.php será executado.controller/user/preprocess.php será executado.controller/user/home.php será executado.controller/user/postprocess.php será executado.O roteamento dinâmico na estrutura do AIS permite padrões de URL flexíveis que se adaptam às solicitações recebidas dinamicamente. Em vez de ter uma estrutura de URL fixa, o roteamento dinâmico usa padrões que podem corresponder a vários caminhos de URL. Aqui está como funciona:
---- app
-------- controller
------------ user
---------------- dynamic.php (Accessible via /user/{value})
Por exemplo, se uma solicitação for feita para /user/123 , o sistema de roteamento dinâmico interpretará 123 como um parâmetro e o processará usando o controlador de user/dynamic.php por variável $link_vars .
<?php
// controller/user/dynamic.php
echo " User id: " . $ link_vars [ 0 ]; // User id: 123
?>Você também pode usar a estrutura do diretório para roteamento dinâmico, por exemplo:
---- app
-------- controller
------------ user
---------------- dynamic
-------------------- dynamic
------------------------ home.php (Accessible via /user/{value[0]}/{value[1]})
------------------------ open.php (Accessible via /user/{value[0]}/{value[1]}/open)
-------------------- home.php (Accessible via /user/{value[0]})
-------------------- edit.php (Accessible via /user/{value[0]}/edit)
Por exemplo, se uma solicitação for feita para /user/123/AIS-Project , o sistema de roteamento dinâmico interpretará 123 como um parâmetro e o processará usando o controlador de user/dynamic.php pela variável $link_vars .
<?php
// controller/user/dynamic/dynamic/open.php
<<<<<<< HEAD
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ;
=======
echo " Opening project: " . $ link_vars [ 1 ] . " of " . $ link_vars [ 0 ] . " user. " ; // Opening AIS-Project of 123 user.
>>>>>>> 0 bee68c121c4e091084a9bf093779bfe647b757d
?> Você pode carregar uma visualização usando a função view(view_path, data, options) .
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?> Se houver layout.php , ele será incluído automaticamente na exibição.
---- app
-------- view
------------ layout.php
------------ home.php
------------ user
---------------- home.php
---------------- transactions.php
---------------- edit-profile.php
Você usará dados do usuário em /user/home view.
<?php
// view/user/home.php
echo " Welcome, " . $ user [ ' name ' ] . " ! " ;
?> Você pode criar facilmente APIs usando o AIS Toolkit.
<?php
// controller/api/user/get-users.php
$ users = database:: select ( ' users ' , ' * ' , [ ' LIMIT ' => 1 ]);
response ( $ users );
?>A saída será no formato JSON.
{
"meta" : {
"status" : " SUCCESS "
},
"data" : [
{
"id" : 1 ,
"name" : " John Doe "
}
]
}Você pode criar facilmente comandos da CLI usando o AIS Toolkit.
<?php
// controller/_cli/jobs/deactivate-users.php
$ inactive_users = database:: select ( ' users ' , ' * ' , [ ' active ' => 1 ]);
. . .
cout ( " Deactivated users: " . count ( $ inactive_users ));
?>Você pode executá -lo usando este comando:
php index.php -r jobs/deactivate-users
Na AIS, é preferido não usar modelos para simpilicidade. No entanto, nos controladores, você pode carregar modelos usando a função model(model_path) quando necessário.
Na AIS, os modelos são simples e fáceis de usar. Eles estão localizados na pasta app/model e são usados para interagir com o banco de dados.
<?php
// controller/user/home.php
model ( ' user ' );
// or
require MODEL . ' user.php ' ;
$ user = getUser ( $ _SESSION [ ' user_id ' ]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' ]);
?>O AIS usa uma versão personalizada do Medoo como o wrapper de banco de dados. É fácil de usar e fácil de entender.
<?php
// model/user.php
function getUser ( $ user_id ) {
return database:: select ( ' users ' , ' * ' , [ ' id ' => $ user_id ]);
}
function activateUser ( $ user_id ) {
return database:: update ( ' users ' , [ ' active ' => 1 ], [ ' id ' => $ user_id ]);
}
. . .
?> Apenas não o faça complexo!
AIS Regra 1: Para simplificar, não usar classes para controladores e modelos para garantir implementações fáceis.
Regra 2 da AIS: Para simplificar, cada arquivo é apenas uma solicitação, garantindo que os arquivos permaneçam pequenos e gerenciáveis.
Regra 3 da AIS: Para simplificar, não há necessidade de especificar o método HTTP em solicitações e roteamentos, os nomes de arquivos são suficientes!
Regra 4 da AIS: para simplificar, não é recomendável que não use modelos.
Aqui está um uso total para os métodos na estrutura da AIS:
Força uma página a ser acessada via método de solicitação HTTP e tipo de conteúdo. Você deve chamar essa função no início do seu controlador. Se as condições não forem atendidas, o script será encerrado com o erro HTTP.
Parâmetros:
$options (Array): Opções para Método e Tipo de Conteúdo.Exemplo de uso:
<?php
// controller/user/home.php
http_check ([ ' method ' => ' POST ' , ' content_type ' => ' application/json ' ]);
$ data = json_decode ( file_get_contents ( ' php://input ' ), true );
?>Carrega um arquivo de modelo ou um diretório de arquivos de modelo de contorno.
Parâmetros:
$model (string): o caminho do modelo na pasta app/model .Exemplo de uso:
<?php
// controller/user/home.php
model ( ' user ' );
?>Carrega um arquivo de exibição com dados e opções.
Parâmetros:
$view (string): o caminho de exibição na pasta app/view .$data (matriz): os dados são uma matriz associativa a ser extraída na vista como variáveis.$options (Array): Opções para carregar layout como ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Essas opções são acessíveis usando a variável $_VIEW .Exemplo de uso:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
view ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
?> Renderiza uma visualização e retorna o conteúdo do buffer de saída. Em vez de usar view() para ecoar a saída para o cliente, você pode usar render() para obter o conteúdo do buffer de saída.
Parâmetros:
$view (string): o caminho de exibição na pasta app/view .$data (matriz): os dados são uma matriz associativa a ser extraída na vista como variáveis.$options (Array): Opções para carregar layout como ['title' => 'Home Page', 'description' => 'Home Page Description', 'load_layout' => true] . Essas opções são acessíveis usando a variável $_VIEW .Exemplo de uso:
<?php
// controller/user/home.php
$ user = database:: select ( ' users ' , ' * ' , [ ' id ' => $ _SESSION [ ' user_id ' ]]);
$ view = render ( ' user/home ' , [ ' user ' => $ user ], [ ' title ' => ' Dashboard ' , ' load_layout ' => true ]);
echo $ view ;
?> Carrega um arquivo de biblioteca ou um diretório da biblioteca com o arquivo init.php .
Parâmetros:
$lib (string): o caminho da biblioteca na pasta app/lib .Exemplo de uso:
<?php
// controller/user/home.php
lib ( ' upload ' );
$ uploader = new upload ();
?>Redireciona para um URL especificado e encerra o script.
Parâmetros:
$url (string): o URL para redirecionar.Exemplo de uso:
redirect ( ' https://example.com ' );Produz dados com um delimitador opcional para o console. Este nome é dado a partir da linguagem C ++.
Parâmetros:
$data (mixed): os dados a serem produzidos.$delimiter (string): o delimitador a anexar.Exemplo de uso:
cout ( ' Hello World ' , " n " );Envia uma resposta com dados e metadados opcionais para o usuário em APIs e rescindem o script.
Parâmetros:
$data (misto): os dados de resposta.$meta (matriz): metadados opcionais.Exemplo de uso:
response ([ ' sum ' => 100 ], [ ' status ' => ' SUCCESS ' ]);
// Output to endpoint: {"data":{"sum":100},"meta":{"status":"SUCCESS"}}Envia uma resposta com um status e dados para o usuário nas APIs, então encerra o script.
Parâmetros:
$code (string): o status a ser enviado ao usuário.$data (matriz): os dados de resposta.Exemplo de uso:
status ( ' PROCESS_ERROR ' , [ ' error ' => ' Something went wrong ' ]);
// Output to endpoint: {"data":{"error":"Something went wrong"},"meta":{"status":"PROCESS_ERROR"}}Envia uma resposta de sucesso com dados.
Parâmetros:
$data (matriz): os dados de resposta.Exemplo de uso:
success ();
// Output to endpoint: {"data":[],"meta":{"status":"SUCCESS"}}Envia uma resposta de falha com dados e status.
Parâmetros:
$data (matriz): os dados de resposta.$status (string): o código de status.Exemplo de uso:
fail ([ ' error ' => ' Invalid request ' ], ' ERROR ' );Envia um código de status HTTP com dados opcionais e metadados.
Parâmetros:
$code (int): o código de status HTTP.$data (matriz): os dados de resposta.$meta (matriz): metadados opcionais.Exemplo de uso:
http_status ( 404 ); // Shows browser 404 error.Exemplo de uso:
http_status ( 404 , [ ' error ' => ' Not found ' ], [ ' status ' => ' ERROR ' ]);
// HTTP error 404 + Output to endpoint: {"data":{"error":"Not found"},"meta":{"status":"ERROR"}}Exemplo de uso:
http_status ( 404 , " Page not found! " );
// HTTP error 404 + Output text to endpoint: Page not found!Não faz nada :). É usado para o Code Beauty ou apenas um espaço reservado para o desenvolvimento futuro.
Exemplo de uso:
do_nothing (); Dumps ( var_dump ) Uma variável e, opcionalmente, termina o script.
Parâmetros:
$var (misto): a variável para despejar.$die (BOOL): se deve encerrar o script.Exemplo de uso:
dump ( $ var , true ); Alias para o método dump .
Parâmetros:
$var (misto): a variável para despejar.$die (BOOL): se deve encerrar o script.Exemplo de uso:
d ( $ var , true );Alias para "Dump and Die". Despeja uma variável e termina o script.
Parâmetros:
$var (misto): a variável para despejar.Exemplo de uso:
dd ( $ var );Gera uma sequência alfanumérica aleatória de um comprimento especificado.
Parâmetros:
$length (int): o comprimento da sequência aleatória.Exemplo de uso:
strand ( 8 ); // Output: "9S34zD7o" Envia um application/x-www-form-urlencoded Solicy com dados do formulário.
Parâmetros:
$url (string): o URL para enviar a solicitação.$data (matriz): os dados do formulário a serem enviados.Exemplo de uso:
post ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]); Envia uma solicitação application/json com dados JSON.
Parâmetros:
$url (string): o URL para enviar a solicitação.$data (matriz): os dados json a serem enviados.Exemplo de uso:
post_json ( ' https://example.com/api/data ' , [ ' key ' => ' value ' ]);Produz um backtrace da pilha de chamadas atual.
Exemplo de uso:
backtrace (); // Outputs a backtrace of the current call stack.Libera o buffer de saída e fecha as conexões.
Exemplo de uso:
close_everything ();Fecha tudo e encerra o script.
Exemplo de uso:
die_gracefully ();