Artículos de ThinkPHP sobre preguntas comunes de entrevistas en PHP

1. Marcos PHP comunes

答 : thinkPHP 、 yii 、 ZendFramework 、 CakePhp 、 sy

2. ¿Cómo entender el archivo de entrada única en TP?

Respuesta: ThinkPHP utiliza un modo de entrada única para la implementación y el acceso al proyecto. No importa qué función se complete, un proyecto tiene una entrada unificada (pero no necesariamente la única). Debe decirse que todos los proyectos comienzan desde el archivo de entrada, y los archivos de entrada de todos los proyectos son similares. Los archivos de entrada incluyen principalmente:

  • Defina la ruta del marco, la ruta del proyecto y el nombre del proyecto (opcional)

  • Definir constantes relacionadas para el modo de depuración y el modo de ejecución (opcional)

  • Cargue el archivo de entrada del marco (obligatorio)

3. ¿Qué son las capas MVC en ThinkPHP? (comprensión)

Respuesta: MVC es una forma de separar la capa lógica y la capa de presentación de una aplicación. ThinkPHP también se basa en el patrón de diseño MVC. MVC es solo un concepto abstracto, y no hay una estipulación clara. Las capas MVC en ThinkPHP se reflejan aproximadamente en:

  • Modelo (M): La definición del modelo se completa con la clase Modelo.

  • Controlador (C): el controlador de la aplicación (clase de aplicación del controlador principal) y el controlador de acción asumen el papel de controlador. El controlador de acción completa el control del proceso empresarial, mientras que el controlador de la aplicación es responsable del control de programación.

  • Vista (V): Se compone de la clase Vista y el archivo de plantilla. La plantilla está 100% separada y se puede previsualizar y producir de forma independiente.

Pero, de hecho, ThinkPHP no se basa en M o V, lo que significa que puede funcionar sin un modelo o vista. Ni siquiera se basa en C, porque ThinkPHP también tiene un controlador maestro en la parte superior de Action, el controlador de la aplicación, responsable de la programación general de la aplicación. En ausencia de C, debe haber una vista V, de lo contrario ya no es una aplicación completa.

Con todo, el modelo MVC de ThinkPHP solo proporciona un medio de desarrollo ágil, en lugar de apegarse al MVC en sí.

4. ¿Cómo optimizar SQL? (En cuanto a la explicación a continuación, puede comprenderla y luego puede decir el significado general de acuerdo con su propio entendimiento)

Respuesta: (1) Elija el motor de almacenamiento correcto

  • Tome MySQL como ejemplo, incluidos dos motores de almacenamiento MyISAM e InnoDB, cada motor tiene ventajas y desventajas.

  • MyISAM es adecuado para algunas aplicaciones que requieren una gran cantidad de consultas, pero no es muy bueno para una gran cantidad de operaciones de escritura. Incluso si solo necesita actualizar un campo, toda la tabla se bloqueará y otros procesos, incluso el proceso de lectura, no podrán funcionar hasta que se complete la operación de lectura. Además, MyISAM es extremadamente rápido para cálculos como SELECT COUNT (*).

  • La tendencia de InnoDB será un motor de almacenamiento muy complejo, para algunas aplicaciones pequeñas, será más lento que MyISAM. Pero admite "bloqueo de fila", por lo que será mejor cuando haya más operaciones de escritura. Además, también admite aplicaciones más avanzadas, como transacciones.

(2) Optimice el tipo de datos del campo

Recuerde un principio, cuanto más pequeña sea la columna, más rápido. Si una tabla solo tiene unas pocas columnas (como tablas de diccionario, tablas de configuración), entonces no tenemos ninguna razón para usar INT como clave primaria. Es más económico usar MEDIUMINT, SMALLINT o un TINYINT más pequeño. Si no necesita registrar el tiempo, usar DATE es mucho mejor que DATETIME. Por supuesto, también debe dejar suficiente espacio para la expansión.

(3) Agregue un índice al campo de búsqueda

Los índices no son necesariamente para claves primarias o campos únicos. Si hay un campo en su tabla que siempre usará para buscar, es mejor indexarlo, a menos que el campo que desee buscar sea un campo de texto grande, entonces debe establecer un índice de texto completo.

(4) Evite usar Seleccionar

Cuantos más datos se lean de la base de datos, más lenta se vuelve la consulta. Y, si su servidor de base de datos y su servidor WEB son dos servidores independientes, esto también aumentará la carga de transmisión de la red. Incluso si desea consultar todos los campos en la tabla de datos, intente no usar el comodín *. Hacer un buen uso de la definición de exclusión de campo incorporada puede traer más conveniencia.

(5) Utilice ENUM en lugar de VARCHAR

El tipo ENUM es muy rápido y compacto. De hecho, guarda TINYINT, pero aparece como una cadena en el exterior. De esta manera, usar este campo para hacer algunas listas de opciones se vuelve bastante perfecto. Por ejemplo, los valores de estos campos, como género, origen étnico, departamento y estado, son limitados y fijos. Entonces, debe usar ENUM en lugar de VARCHAR.

(6) Use NOT NULL tanto como sea posible

A menos que tenga una razón muy especial para usar valores NULL, siempre debe mantener sus campos NO NULL. NULL realmente requiere espacio adicional, y su programa será más complicado cuando compare. Por supuesto, esto no quiere decir que no puedas usar NULL. La realidad es muy complicada. Todavía hay algunos casos en los que necesitas usar NULL.

(7) Las mesas de longitud fija serán más rápidas

Si todos los campos de la tabla son de "longitud fija", toda la tabla se considerará "estática" o "de longitud fija". Por ejemplo, no hay campos de los siguientes tipos en la tabla: VARCHAR, TEXT, BLOB. Siempre que incluya uno de estos campos, la tabla no es una "tabla estática de longitud fija". De esta manera, el motor MySQL utilizará otro método para procesarla.

Las tablas de longitud fija mejorarán el rendimiento, porque MySQL busca más rápido, porque estas longitudes fijas son fáciles de calcular el desplazamiento de los datos siguientes, por lo que la lectura será naturalmente rápida. Y si el campo no es de longitud fija, entonces cada vez que busque el siguiente, el programa debe encontrar la clave principal.

Además, las tablas de longitud fija son más fáciles de almacenar en caché y reconstruir. Sin embargo, el único efecto secundario es que los campos de longitud fija desperdician algo de espacio, porque los campos de longitud fija necesitan asignar mucho espacio, ya sea que los use o no.

5. ¿Cómo entender el comportamiento en la arquitectura ThinkPHP 3.0 tres (núcleo + comportamiento + controlador)?

Respuesta: núcleo + comportamiento + impulso

La abreviatura oficial de TP es: CBD

  • Core: Es el código central del framework, algo indispensable, TP en sí mismo es un framework desarrollado en base a la idea de MVC.

  • Comportamiento: El comportamiento juega un papel fundamental en la arquitectura del nuevo ThinkPHP. En el núcleo del sistema, se establecen muchos bits de extensión de etiquetas y cada posición de etiqueta puede ejecutar su propio comportamiento independiente a su vez. Las extensiones de comportamiento nacieron y muchas funciones del sistema también se completan a través de extensiones de comportamiento integradas Todas las extensiones de comportamiento se pueden reemplazar y agregar, formando así la base del marco subyacente que se puede ensamblar.

  • Controlador: controlador de base de datos, controlador de caché, controlador de biblioteca de etiquetas y controlador de motor de plantilla, así como extensiones de clase externas.

Marco, es decir marco. De hecho, es un producto semiacabado de una determinada aplicación, que es un conjunto de componentes que usted elige para completar su propio sistema. En pocas palabras, utiliza el escenario preparado por otros y realiza la actuación. Además, el marco es generalmente un software maduro y actualizado continuamente.

6. ¿Cuál es la configuración convencional?

Respuesta: Configuración convencional Página anterior Página siguiente La convención es una idea importante que sigue el sistema El sistema tiene un archivo de configuración personalizado incorporado (Conf \ convention.php en el directorio del sistema), que se utiliza para la mayoría de los parámetros comunes. Se realiza la configuración predeterminada. Por lo tanto, para el archivo de configuración del proyecto de la aplicación, generalmente solo necesita configurar los parámetros de configuración que son diferentes a la configuración convencional o los nuevos parámetros de configuración.Si usa la configuración predeterminada por completo, ni siquiera necesita definir ningún archivo de configuración.

El sistema cargará automáticamente el archivo de configuración personalizado y no es necesario cargarlo en el proyecto.

7. ¿Qué es la inyección SQL? (comprensión)

Respuesta: Los ataques de inyección de SQL son uno de los métodos habituales que utilizan los piratas informáticos para atacar bases de datos. Algunos programadores no juzgaron la legalidad de los datos de entrada del usuario al escribir el código. El inyector podría ingresar un fragmento del código de consulta de la base de datos en el formulario y enviarlo. El programa reunió la información enviada para generar una declaración SQL completa. El servidor fue engañado Ejecute el comando SQL malicioso. Según los resultados devueltos por el programa, el inyector obtiene con éxito algunos datos sensibles e incluso controla todo el servidor, esto es inyección SQL.

8. ¿Cómo evita ThinkPHP la inyección de SQL? (comprensión)

Respuesta: (1) Intente utilizar el método de matriz para las condiciones de consulta, que es un método más seguro;

(2) Si debe utilizar condiciones de consulta de cadena, utilice el mecanismo de preprocesamiento;

(3) Active la verificación del tipo de campo de datos y puede forzar la conversión de tipos de datos numéricos; (la verificación del tipo de campo es obligatoria desde la versión 3.1)

(4) Usar verificación automática y mecanismos de finalización automática para el filtrado personalizado de aplicaciones;

(5) Utilice la verificación del tipo de campo, la verificación automática y los mecanismos de finalización automática para evitar la entrada de datos maliciosos.

9. ¿Cómo activar el modo de depuración? ¿Cuáles son los beneficios del modo de depuración?

Respuesta: Activar el modo de depuración es muy simple, solo agregue una línea de código de definición constante en el archivo de entrada:

Activar el modo de depuración

Después de completar la fase de desarrollo y la implementación en el entorno de producción, solo necesita eliminar el código de definición del modo de depuración para cambiar al modo de implementación. Una vez activado el modo de depuración, el sistema primero cargará el archivo de configuración de depuración predeterminado del sistema y luego cargará el archivo de configuración de depuración del proyecto. Las ventajas del modo de depuración son: Activar el registro, cualquier información de error e información de depuración se registrará en detalle, lo cual es conveniente para la depuración; Desactivar la caché de la plantilla , La modificación de la plantilla puede tener efecto de inmediato; Registre los registros SQL para un fácil análisis de SQL; Cierre el caché de campo, la modificación del campo de la tabla de datos no se ve afectada por el caché; Verifique estrictamente el caso del archivo (incluso en la plataforma Windows) para ayudarlo a encontrar problemas de implementación de Linux por adelantado; Es conveniente Utilizados en diferentes etapas del proceso de desarrollo, incluido el desarrollo, las pruebas y la demostración, y cualquier otra situación requerida, se pueden configurar diferentes modos de aplicación con archivos de configuración de proyecto independientes.

10. ¿Qué modos de configuración son compatibles con TP? ¿prioridad?

Respuesta: ThinkPHP ha creado su propio modo de configuración jerárquica único en la configuración del proyecto, y su nivel de configuración se refleja en: Configuración convencional -> Configuración del proyecto -> Configuración de depuración -> Configuración de grupo -> Configuración extendida -> Configuración dinámica

El anterior es el orden en el que se cargan los archivos de configuración, porque la siguiente configuración sobrescribirá la configuración anterior con el mismo nombre (sin tener efecto), por lo que el orden de prioridad es de derecha a izquierda.

11. ¿Cuáles son los patrones de URL en TP? ¿Cuál es el predeterminado?

Respuesta: ThinkPHP admite cuatro modos de URL, que se pueden definir configurando el parámetro URL_MODEL, incluido el modo normal, PATHINFO, REWRITE y el modo de compatibilidad.

El modo predeterminado es: modo PATHINFO, establezca URL_MODEL en 1

12. ¿Cuáles son las variables del sistema en TP? ¿Cómo obtener variables del sistema?

Respuesta: Cómo obtener variables del sistema:

Simplemente llame al siguiente método en acción:

$ this-> nombre del método ("nombre de variable", ["método de filtro"], ["valor predeterminado"])

13. ¿Cuál es la diferencia entre la función D y la función M en el marco ThinkPHP?

Respuesta: El modelo de creación de instancias del método M no requiere que el usuario defina una clase de modelo para cada tabla de datos, el método D puede detectar automáticamente la clase de modelo, si hay una clase de modelo personalizada, instancia la clase de modelo personalizada, si no, se llamará automáticamente Método M para instanciar la clase base Model. Al mismo tiempo, el modelo que se ha instanciado no se instanciará repetidamente (modo singleton).

Presta atención, no te pierdas

Muy bien, todos, lo anterior es todo el contenido de este artículo. Las personas que pueden ver aquí son todos talentos . Como dije antes, hay muchos puntos técnicos en PHP, porque hay demasiados, es realmente imposible de escribir, y no leerás demasiado después de escribirlo, así que lo organizaré en PDF y documentos aquí, si es necesario. lata

Haga clic para ingresar el código secreto: PHP + 「Plataforma」

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí


Para obtener más contenido de aprendizaje, visite el excelente catálogo de tutoriales de arquitecto PHP de [Comparative Standard Factory], siempre que pueda leerlo para asegurarse de que el salario aumentará un paso (actualización continua)

El contenido anterior espera poder ayudarte . Muchos PHPers siempre encuentran algunos problemas y cuellos de botella cuando están avanzados. No hay sentido de dirección cuando escriben demasiado código comercial. No sé por dónde empezar a mejorar. He compilado información sobre esto, incluyendo Pero no se limita a: arquitectura distribuida, alta escalabilidad, alto rendimiento, alta concurrencia, ajuste del rendimiento del servidor, TP6, laravel, YII2, Redis, Swoole, Swoft, Kafka, optimización de Mysql, scripts de shell, Docker, microservicios, Nginx, etc. Muchos puntos de conocimiento, productos secos avanzados avanzados, se pueden compartir con todos de forma gratuita, y aquellos que lo necesiten pueden unirse a mi grupo de intercambio de tecnología PHP

Supongo que te gusta

Origin blog.csdn.net/weixin_49163826/article/details/108815841
Recomendado
Clasificación