¡Buen día chicos!
¿Solo quiero preguntar la diferencia de uso fuera de la class y uso dentro de la class ? También lo busqué en Google, pero mi pregunta no coincide con una respuesta.
Ejemplo :
namespace App\Http\Controllers\Auth; use Validator; use App\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ThrottlesLogins; use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; use Auth; use Illuminate\Http\Request; class AuthController extends Controller { use AuthenticatesAndRegistersUsers, ThrottlesLogins; protected $redirectTo = '/'; /** * Create a new authentication controller instance. * * @return void */ public function __construct() { // Some Code }Cuando define una clase, solo puede tener acceso a otras clases dentro de sus espacios de nombres. Su controlador, por ejemplo, se define dentro del siguiente espacio de nombres.
namespace App\Http\Controllers\Auth;Entonces, para usar otras clases, debe importarlas desde sus propios espacios de nombres para poder acceder a ellas. p.ej:
use Illuminate\Foundation\Auth\ThrottlesLogins; Si tiene experiencia con javascript ES6, es un poco similar a import . Cuando importa un paquete, el espacio de nombres predeterminado es /node_modules . Para importar sus propios archivos, debe ordenarlos en el espacio de nombres dando la ubicación del archivo como
import '../containers/index.js' Volvamos a Laravel. Ahora que ha importado ThrottlesLogins , que en realidad es un rasgo, ahora dentro de la clase lo use para exponer todos los métodos dentro.
use Illuminate\Foundation\Auth\ThrottlesLogins; //import public class AuthController { use ThrottlesLogins; //exposes all the methods inside ... public function login() { ... //login failed $this->incrementLoginAttempts(); //defined in ThrottlesLogins Trait } } Del ejemplo anterior, tiene acceso directo a incrementLoginAttempts() , que se define como ThrottlesLogins .