php - sirve - ejemplo de atributo alt html
¿Para qué sirve la función__construct? (12)
He estado notando __construct
mucho con clases. Leí un poco leyendo y navegando por la web, pero no pude encontrar una explicación que pudiera entender. Estoy empezando con OOP.
Me preguntaba si alguien podría darme una idea general de lo que es, y luego un simple ejemplo de cómo se usa con PHP.
Creo que esto es importante para la comprensión del propósito del constructor.
Incluso después de leer las respuestas aquí, me tomó unos minutos darme cuenta y esta es la razón.
Me he acostumbrado a codificar explícitamente todo lo que se inicia o se produce. En otras palabras, esta sería mi clase de gato y cómo la llamaría.
class_cat.php
class cat {
function speak() {
echo "meow";
}
}
somepage.php
include(''class_cat.php'');
mycat = new cat;
$speak = cat->speak();
echo $speak;
Donde en ejemplos de "clase de gato" de @Logan Serman se asume que cada vez que creas un nuevo objeto de la clase "gato" quieres que el gato "muchedumbre" en lugar de esperar a que llames a la función para hacerlo maullar.
De esta manera, mi mente estaba pensando explícitamente donde el método constructor usa implicidad y esto lo hizo difícil de entender al principio.
Creo que la función __construct () {...}
es un fragmento de código que puede reutilizarse una y otra vez en sustitución de TheActualFunctionName () {...}
. Si cambia el Nombre de CLASE no tiene que cambiar dentro del código porque el __construct genérico se refiere siempre al nombre de clase real ... cualquiera que sea. Usted codifica menos ... o?
El constructor es un método que se invoca automáticamente en la creación de instancias de clase. Lo que significa que los contenidos de un constructor se procesan sin llamadas a métodos separados. El contenido de un paréntesis de palabra clave de clase se pasa al método constructor.
El método __construct
es para pasar parámetros cuando crea un objeto por primera vez , lo cual es algo común de hacer. Si no desea pasar ningún parámetro en el momento de la creación, no lo necesita.
Asi que:
// Create a new class, and include a __construct method
class Task {
public $title;
public $description;
public function __construct($title, $description){
$this->title = $title;
$this->description = $description;
}
}
// Create a new object, passing in a $title and $description
$task = new Task(''Learn OOP'',''This is a description'');
// Try it and see
var_dump($task->title, $task->description);
Es otra forma de declarar el constructor. También puede usar el nombre de la clase, por ejemplo:
class Cat
{
function Cat()
{
echo ''meow'';
}
}
y
class Cat
{
function __construct()
{
echo ''meow'';
}
}
Son equivalentes Se llaman cada vez que se crea una nueva instancia de la clase, en este caso, se llamarán con esta línea:
$cat = new Cat();
Espero esta ayuda:
<?php
// The code below creates the class
class Person {
// Creating some properties (variables tied to an object)
public $isAlive = true;
public $firstname;
public $lastname;
public $age;
// Assigning the values
public function __construct($firstname, $lastname, $age) {
$this->firstname = $firstname;
$this->lastname = $lastname;
$this->age = $age;
}
// Creating a method (function tied to an object)
public function greet() {
return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
}
}
// Creating a new person called "boring 12345", who is 12345 years old ;-)
$me = new Person(''boring'', ''12345'', 12345);
// Printing out, what the greet method returns
echo $me->greet();
?>
Para obtener más información, debe ir a codecademy.com
Nota: Los constructores principales no se invocan implícitamente si la clase secundaria define un constructor. Para ejecutar un constructor padre, se requiere una llamada a parent::__construct()
dentro del constructor hijo. Si el niño no define un constructor, entonces puede ser heredado de la clase padre como un método de clase normal (si no se declaró como privado).
__construct es un método para inicializar un objeto nuevo antes de usarlo.
http://php.net/manual/en/language.oop5.decon.php#object.construct
__construct siempre se llama cuando se crean nuevos objetos o se invocan cuando tiene lugar la inicialización. Es adecuado para cualquier inicialización que el objeto pueda necesitar antes de ser utilizado. __construct method es el primer método ejecutado en clase.
class Test
{
function __construct($value1,$value2)
{
echo "Inside Construct";
echo $this->value1;
echo $this->value2;
}
}
//
$testObject = new Test(''abc'',''123'');
__construct()
es el nombre del método para el constructor . Se llama al constructor sobre un objeto después de haberlo creado, y es un buen lugar para colocar el código de inicialización, etc.
class Person {
public function __construct() {
// Code called for each new Person we create
}
}
$person = new Person();
Un constructor puede aceptar parámetros de la manera normal, que se pasan cuando se crea el objeto, por ejemplo
class Person {
public $name = '''';
public function __construct( $name ) {
$this->name = $name;
}
}
$person = new Person( "Joe" );
echo $person->name;
A diferencia de algunos otros lenguajes (por ejemplo, Java), PHP no admite la sobrecarga del constructor (es decir, tener múltiples constructores que aceptan diferentes parámetros). Puede lograr este efecto usando métodos estáticos.
Nota : Recuperé esto del registro de la respuesta aceptada (al momento de escribir esto).
__construct
se introdujo en PHP5 y es la forma correcta de definir tu, bueno, constructores (en PHP4 usaste el nombre de la clase para un constructor). No es necesario que defina un constructor en su clase, pero si desea pasar algún parámetro sobre la construcción del objeto, entonces necesita uno.
Un ejemplo podría ser así:
class Database {
protected $userName;
protected $password;
protected $dbName;
public function __construct ( $UserName, $Password, $DbName ) {
$this->userName = $UserName;
$this->password = $Password;
$this->dbName = $DbName;
}
}
// and you would use this as:
$db = new Database ( ''user_name'', ''password'', ''database_name'' );
Todo lo demás se explica en el manual de PHP: haga clic aquí
class Person{
private $fname;
private $lname;
public function __construct($fname,$lname){
$this->fname = $fname;
$this->lname = $lname;
}
}
$objPerson1 = new Person(''john'',''smith'');