Skip to content
Permalink
Browse files

Mini framework PHP

  • Loading branch information...
abalozz committed Mar 5, 2014
0 parents commit f5046ec2c77016e5205f7aa2b05353e33154ae26
Showing with 826 additions and 0 deletions.
  1. +22 −0 .gitattributes
  2. +215 −0 .gitignore
  3. +3 −0 README.md
  4. +10 −0 controllers/home.php
  5. +77 −0 core/auth.php
  6. +11 −0 core/config.php
  7. +46 −0 core/controller.php
  8. +31 −0 core/db.php
  9. +19 −0 core/helpers.php
  10. +153 −0 core/model.php
  11. +172 −0 core/view.php
  12. +3 −0 public/index.php
  13. +43 −0 start.php
  14. +11 −0 views/404.php
  15. +10 −0 views/home.php
@@ -0,0 +1,22 @@
# Auto detect text files and perform LF normalization
* text=auto

# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
@@ -0,0 +1,215 @@
#################
## Eclipse
#################

*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath

# External tool builders
.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

# CDT-specific
.cproject

# PDT-specific
.buildpath


#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
build/
[Bb]in/
[Oo]bj/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.log
*.scc

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile

# Visual Studio profiler
*.psess
*.vsp
*.vspx

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.Publish.xml
*.pubxml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/

# Windows Azure Build Output
csx
*.build.csdef

# Windows Store app package directory
AppPackages/

# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.[Pp]ublish.xml
*.pfx
*.publishsettings

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm

# SQL Server files
App_Data/*.mdf
App_Data/*.ldf

#############
## Windows detritus
#############

# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Mac crap
.DS_Store


#############
## Python
#############

*.py[co]

# Packages
*.egg
*.egg-info
dist/
build/
eggs/
parts/
var/
sdist/
develop-eggs/
.installed.cfg

# Installer logs
pip-log.txt

# Unit test / coverage reports
.coverage
.tox

#Translations
*.mo

#Mr Developer
.mr.developer.cfg
@@ -0,0 +1,3 @@
# Mini Framework PHP

Pequeño framework realizado en PHP. No está realizado para ser usado en entornos de producción sino como motivo didáctico.
@@ -0,0 +1,10 @@
<?php
class HomeController extends Controller {
public function index()
{
return View::make('home');
}
}
@@ -0,0 +1,77 @@
<?php
class Auth {
/**
* Comprueba si el cliente ha iniciado sesión.
*
* @return boolean true si ha iniciado sesión. false si no.
*/
static function check()
{
if (isset($_SESSION['user']) && $_SESSION['user']->is_exist()) {
return true;
}
return false;
}
/**
* Inicia sesión con los datos pasados por parámetro.
*
* @param String $identity Nombre de usuario o email.
* @param String $password Contraseña sin encriptar.
* @return boolean true si ha iniciado sesión. false si ha ocurrido algún error.
*/
static function login($identity, $password)
{
if (filter_var($identity, FILTER_VALIDATE_EMAIL)) {
$user = User::where(['email' => $identity, 'password' => encrypt($password)], 1);
} else{
$user = User::where(['username' => $identity, 'password' => encrypt($password)], 1);
}
if ($user) {
$_SESSION['user'] = $user;
return true;
}
return false;
}
/**
* Cierra la sesión del usuario.
*/
static function logout()
{
session_destroy();
}
/**
* Crea un nuevo usuario
*
* @return mixed El modelo del usuario creado, o false si falló.
*/
static function create($user_data)
{
$user_data['password'] = encrypt($user_data['password']);
$user = User::create($user_data);
return $user;
}
/**
* Devuelve el usuario almacenado en la sesión. Si no existe, devuevle false.
*
* @return mixed El usuario almacenado en sesión o false si no existe.
*/
static function user()
{
if (self::check()) {
return $_SESSION['user'];
} else {
return false;
}
}
}
@@ -0,0 +1,11 @@
<?php
$config = [
'db' => [
'host' => '',
'port' => '',
'name' => '',
'user' => '',
'pass' => '',
],
];
@@ -0,0 +1,46 @@
<?php
/**
* Controlador base del cual extenderán los demás controladores. El controlador,
* cuando se inicia, se le debe pasar el action, que es el nombre del método
* que va a ejecutar.
*/
class Controller {
static $require_auth = [];
/**
* El constructor recibe el action, que contiene el nombre del método que va a ejecutar.
* Si el método no existe, muestra un error 404. Si existe, envía al cliente la vista
* y finaliza la ejecución del programa.
*
* @param String $action Nombre del método a ejecutar.
*/
public function __construct($action = null)
{
// Comprueba si action es distinto de null, y en dicho caso, si equivale a un método
// que exista en el controlador.
if ($action !== null && method_exists($this, $action)) {
// Comprueba si el método requiere estar autenticado, y lo
// redirige al login si no lo está.
if (in_array($action, static::$require_auth)) {
if (!Auth::check()) {
die(header('Location:./'));
}
}
// Ejecuta el método guardado en $action. Ejemplo: Si $action = 'login', hará $this->login()
$view = $this->$action();
// Si el contenido devuelto por el método es una instancia de la clase View,
// ejecuta el método que imprime la vista.
if ($view instanceof View) {
$view->draw();
// Si no, muestra el contenido devuelto.
} else {
echo $view;
}
die;
}
}
}

0 comments on commit f5046ec

Please sign in to comment.
You can’t perform that action at this time.