php - sirve - Pasar de un marco a no-framework
que es un framework web (9)
He estado desarrollando en PHP durante aproximadamente 8 años como un hobby. En 2009, recogí codeigniter y desde entonces no he podido desarrollar un solo proyecto.
Me parece que me ralentiza tratando de encontrar la forma de modificarlo para que funcione de la manera que quiero, cuando si estuviera trabajando en PHP puro, lo sabría, o podría encontrar rápidamente un fragmento.
Probé CodeIgniter, Kohana y Symfony. Me encanta la facilidad de uso (y también comencé a usar la doctrina como un ORM que aceleró enormemente el trabajo de mi base de datos), pero me parece que los proyectos me llevan 3-4 veces más tiempo que en PHP puro. Me aburro y me siento frustrado cuando no puedo encontrar una solución a un problema que he resuelto previamente en PHP puro.
¿Alguien ha vuelto de usar marcos a un enfoque sin marco? ¿Hay algo así como un marco de seguridad básico (evitar XSS, filtrar los datos publicados, proporcionar una función de limpieza para usar con las bases de datos)? Creo que algo así me beneficiaría mucho más que un marco a escala completa. Creo que aprender a trabajar con frameworks me ha enseñado mucho, pero estaría más feliz trabajando con mi propio código.
Con tanta experiencia detrás de ti, debes tener tu propio conjunto de bibliotecas favoritas, elegirlas a mano y crear tu propio marco de trabajo simple. El marco o ningún marco (y el que corresponda) depende del tipo de proyecto en cuestión, ningún guante se adapta a todos. Por lo tanto, le sugiero encarecidamente que, si considera que los marcos existentes lo están desacelerando, dedique algún tiempo y proponga un marco que funcione según sus necesidades.
Hice un estudio de un día de ToroPHP y lo encontré bastante agradable. Es un marco minimalista dirigido a aplicaciones RESTful. Esto permite mantener el código del lado del servidor modular, sin tener que lidiar con la saturación de ningún marco.
Las versiones actuales de PHP5 incluyen gran parte del marco de seguridad que está buscando como parte de la biblioteca estándar.
- Usa filter_input_array para desinfectar de manera declarativa las cosas que llegan desde el exterior.
- Acceda a su base de datos a través de PDO con SQL parametrizado para evitar ataques de inyección de SQL.
- Use la siguiente configuración de PHP para hacer que su sitio sea más resistente a la fijación de sesión y al robo de cookies:
- session.use_only_cookies (Impide que su token de sesión se filtre a la URL)
-
httponly
o el atributohttponly
a session_set_cookie_params() (Protege contra scripts que leen la cookie de sesión en navegadores compatibles) - Más sugerencias y código de ejemplo PHP disponible en Wikipedia .
- También puede usar el atributo setcookie() con setcookie() .
- Para las nuevas funciones HTTP y HTML5, no se necesita nada más sofisticado que las plantillas básicas y header-setting :
- HTTP Strict Transport Security (Ayuda a proteger contra exploits de WiFi).
- X-Frame-Options (Restringir la incrustación de sus páginas. Bien contra el phishing).
- Atributo IFrame Sandbox HTML5 (Sandbox publicidades de terceros, insignias / videos. Ya en WebKit. Probablemente implementado al menos parcialmente en Firefox 11.)
- Política de seguridad de contenido (el nuevo marco de seguridad de Firefox 4, complementario al atributo de recinto de seguridad. Ahora también se está implementando en Chrome ).
Si acepta HTML como entrada, le recomiendo que tome HTML Purifier y lo llame a través de una línea FILTER_CALLBACK en su configuración filter_input_array. Su enfoque basado en la lista blanca de seguridad de entrada hace una gran (y muy poderosa) primera línea de defensa contra XSS.
Por lo que puedo decir, PHP no viene con un mecanismo para proteger contra la falsificación de solicitudes entre sitios , pero estoy seguro de que Google puede ayudarlo con eso. Las hojas de seguridad de OWASP incluyen una sección si desea implementar su propia protección.
Por curiosidad, decidí también comenzar a buscar componentes independientes y esto es lo que he encontrado hasta ahora:
Templating:
- Herencia de plantilla de PHP ( herencia de plantilla de PHP más regular)
- TWIG (Django / Jinja2 / Sintaxis de estilo Liquid incluye autoescape y sandboxing. Compila en PHP en caché la velocidad).
- Dwoo (un sucesor de Smarty más rápido, más funcional, PHP5-ish. Incluye un sistema de compatibilidad para las plantillas Smarty existentes).
Cosas que todavía no he examinado correctamente:
- RouteMap rutas (solo se han encontrado RouteMap y Net_URL_Mapper hasta ahora. Gracias, cweiske).
- ORM (en caso de que PDO desnudo no sea lo tuyo)
No creo en frameworks ... He trabajado en muchos de ellos.
Razones para odiar los marcos MVC:
1) Bloat Code, compro clases premium que me ayudan en el desarrollo. Tales como clases de formulario o clases de SQL.
2) Creo que los frameworks MVC no son fáciles de usar, especialmente cuando se usan administradores de dependencias.
3) Creo que en realidad escribes más código con un framework MVC y luego si tienes que usar un repetitivo con toneladas de clases útiles que manejan la autenticación, etc.
4) La mayoría de los marcos también cubren solo una o dos bases de datos de forma nativa.
Sugeriría encontrar un marco de trabajo con autenticación y editor de texto y un marco sql como madoo + una clase de correo electrónico ...
El 90% de su aplicación es siempre CLASES FORM, sql & ajax: el resto solo se puede adquirir cuando sea necesario
Soy un minimalista y lucho con la idea de tener código en mi aplicación que no está haciendo nada ... solo en caso de que lo necesite no me funciona.
No sé qué es lo que te molesta, pero Codeigniter es un gran framework. Tiene una buena documentación y, como muchas personas usan codeigniter, encontrarás toda la ayuda en su documentación, foro o . He trabajado en muchos frameworks ( Codeigniter, CakePHP, Zend, Spring 3.0, Ruby on Rails), pero debo decir que codeigniter tiene la mejor documentación. Hay muchas cosas en codeigiter que se manejan automáticamente y no tiene que preocuparse por la seguridad. Trabajar en PHP central es como reinventar la rueda. Bueno, lo más importante es que pasar de un núcleo a un armazón requerirá mucho de su esfuerzo una vez que esté acostumbrado, comenzará a amarlo. Además, Ruby on Rails es también un gran armazón una vez que conoce sus pormenores que puede tener doble velocidad.
Para la seguridad básica, uso un método de filtro personalizado que envuelve mis superglobales . Es necesario acostumbrarse a su sintaxis, pero es más simple que la API de PHP filter_var () y no le permite desinfectarse:
$_GET->text("inputvar") or $_POST->name["field"]
También permitió escanear en línea $ _REQUEST-> sql (). Pero para el trabajo de la base de datos, siga usando SQL parametrizado o su DAL / ORM de elección.
Sé exactamente cómo te sientes. Empecé 4 ~ 5 años atrás en PHP (vine de Delphi, lol), y comencé en php puro. Lo que les devolví fue un "panel de CMS" que acaba de leer todos los campos de tablas y crear el formulario. Después de algún tiempo alcancé de alguna manera el conocimiento de PHP Frameworks, probé CakePHP primero y luego no me gustó, me metí en Yii que en mi opinión es bastante intuitivo y fácil de usar (con su generador Gii oscila mucho). Intenté Symfony, ZF2, Laravel, Yii2-Beta y algunos frameworks para RAD, pero todavía no me sentía lo suficientemente rápido como antes de los frameworks.
Sucedió que desarrollé mi propio marco (No fue exactamente que desperté un día y dije "Voy a crear un nuevo marco", sucedió con el tiempo). Sé que es una mala mala mala práctica y un movimiento de "reinvención de la rueda", PERO, ahora desarrollo mis proyectos mucho más rápido (más que solo PHP).
Dado que su código es un MESS total, comencé hace aproximadamente un mes a reformular mi framework, ahora usa composer, sigue reglas comunes que existen entre los frameworks php, es MVC.
¿Por qué estoy reformulando? Porque si alguien necesita reparar un proyecto mío no será otra cosa del mundo.
Entonces te entiendo.
My Advice es, prepare sus herramientas (llámese un marco, una aplicación preestablecida o lo que sea que las personas le asignen) y utilícelas de la forma en que se sienta mejor, pero siga algunas reglas comunes (como MVC, cosas "fáciles de modular" que puedes reemplazar en caso de rotura.
Según su declaración de que ha estado utilizando PHP como hobby, así como su declaración de perfil "Lentamente llegando", esto parece una cuestión de curva de aprendizaje. No parece tener la profundidad y la amplitud de la experiencia para a) entender cómo trabajar dentro de la estructura que impone el marco yb) por lo tanto, no puede beneficiarse de las eficiencias que permite el marco.
Le insto a que se quede con eso. Regrese al comienzo con los videos tutoriales. Busca y lee el código de otras personas hasta que lo comprendas. Cree sus proyectos de abajo hacia arriba, comience de manera simple y agregue funcionalidad. Siga los foros, trate de responder las preguntas usted mismo antes de leer las respuestas.
He estado programando profesionalmente durante casi 20 años, en una gran variedad de plataformas, y todavía me llevó un tiempo sentirme cómodo con CI. Pero ahora que lo estoy, no volvería a PHP puro (para mis propios proyectos) a menos que tuviera un sitio de escala suficiente que expusiera problemas de rendimiento cuantificables (piense en Twitter).
Zend Framework es realmente genial para eso. Puede usar tanto o tan poco como desee. Está todo codificado en php y de código abierto, así que puedes hackearlo y hacerlo tuyo. Los diferentes componentes no dependen tanto entre sí como en otros marcos.
Puede construir un marco simple usando algunos componentes de Zend sin ningún problema.
Check !