name: PSR-12 validation
on:
push:
jobs:
Supongamos que tenemos una aplicación Laravel que tiene varios controladores y vistas. En algunas de estas vistas, necesitamos mostrar un formulario para que el usuario ingrese su información de contacto. En lugar de escribir el código HTML para el formulario en cada vista, podemos crear una plantilla Blade que contenga el formulario y reutilizarla en todas las vistas que necesiten mostrar el formulario. De esta manera, estamos siguiendo el principio DRY, ya que estamos evitando la duplicación de código.
Aquí está el código para la plantilla Blade que contiene el formulario:
<!-- resources/views/partials/contact-form.blade.php -->
<form action="{{ route('contact.store') }}" method="POST">
@csrf
<div class="form-group">
A continuación te mostraré un ejemplo de cómo aplicar el principio SOLID en Laravel utilizando bloques de código. En este ejemplo, utilizaremos el principio de responsabilidad única (SRP) para separar la lógica de negocio de los controladores.
Supongamos que tenemos un controlador que maneja la creación de un nuevo usuario en nuestra aplicación. En este controlador, se está manejando la validación de los datos, la creación del usuario y el envío de un correo electrónico de bienvenida. Esto viola el principio SRP ya que el controlador está asumiendo demasiadas responsabilidades.
Para solucionar este problema, podemos crear una clase separada para manejar la creación de usuarios y otra clase para manejar el envío de correos electrónicos de bienvenida. Aquí está el código para las nuevas clases:
// UserCreator.php
class UserCreator
{
' Based on https://gis.stackexchange.com/questions/334297/generate-coordinates-with-minimum-maximum-distance-from-given-coordinates | |
Public Function RandLatLng(latitude As Double, longitude As Double, maxMeters As Long, minMeters As Long) | |
Dim EarthRadius As Integer | |
Dim Degree As Double | |
Dim P_i As Double | |
Dim MaxKm As Long | |
Dim MinKm As Long | |
Dim The_R As Double | |
Dim The_Theta As Double |
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. | |
SendMode Input ; Recommended for new scripts due to its superior speed and reliability. | |
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. | |
#Hotstring EndChars : | |
#Hotstring O | |
:::today:: | |
Send, %A_DD%/%A_MM%/%A_YYYY% | |
return |
{ | |
"order": { | |
"id": 52, | |
"order_number": 52, | |
"order_key": "order_5836d85314887", | |
"created_at": "2016-11-24T12:08:00Z", | |
"updated_at": "2016-11-24T12:08:51Z", | |
"completed_at": "2016-11-24T12:08:51Z", | |
"status": "pending", | |
"currency": "EUR", |
; Next song | |
NumpadRight::Send {Media_Next} | |
return | |
; Previous song | |
NumpadLeft::Send {Media_Prev} | |
return | |
; Set volume |
; Reference: https://www.autohotkey.com/boards/viewtopic.php?t=49980 | |
; http://www.daveamenta.com/2011-05/programmatically-or-command-line-change-the-default-sound-playback-device-in-windows-7/ | |
Devices := {} | |
IMMDeviceEnumerator := ComObjCreate("{BCDE0395-E52F-467C-8E3D-C4579291692E}", "{A95664D2-9614-4F35-A746-DE8DB63617E6}") | |
; IMMDeviceEnumerator::EnumAudioEndpoints | |
; eRender = 0, eCapture, eAll | |
; 0x1 = DEVICE_STATE_ACTIVE | |
DllCall(NumGet(NumGet(IMMDeviceEnumerator+0)+3*A_PtrSize), "UPtr", IMMDeviceEnumerator, "UInt", 0, "UInt", 0x1, "UPtrP", IMMDeviceCollection, "UInt") | |
ObjRelease(IMMDeviceEnumerator) |
El comando corta el video {input} desde {from} con la duración {length} y lo almacena en {output}. Este método no garantiza que se vaya a cortar el video en el momento exacto. Sin embargo es muy rápido.
# comando
ffmpeg -ss {from} -i {input} -to {length} -c copy {output}
# ejemplo
<?php | |
namespace App\Http\Controllers; | |
use Illuminate\Http\Request; | |
use App\Http\Controllers\Controller as BaseController; | |
class ResourcesController extends BaseController | |
{ | |
/** |