tengo una clase llamada de contacto:PHP Clase Nombre de propiedad
class contacts
{
public $ID;
public $Name;
public $Email;
public $PhoneNumber;
public $CellPhone;
public $IsDealer;
public $DealerID;
}
En algún momento de mi código me gustaría señalar a una propiedad dentro de esa clase y devolver el nombre de la propiedad.
<input type="text"
id="<?php key($objContact->Name)" ?>"
name="<?php key($objContact->Name)" ?>"
value="<?php $_POST['contact'.key($objContact->Name)]" />
Mi problema es que la función key() solo se ocupa de matrices u objetos. $ objContact-> Name no cumple con estos requisitos. Sé que sería igual de simple escribir el nombre en los campos de ID y NOMBRE, pero esto es para otros usos de verificación de código. Imagine la página de procesador:
$objContact = new contact();
$objContact->Email = $_POST[$objContact->Email->**GetSinglePropertyName()**];
$objContact->PhoneNumber = $_POST[$objContact->PhoneNumber->**GetSinglePropertyName()**];
Esto permite que encienda estricto y garantizar que como estoy escribiendo No estoy creación de cualquier error de dedo de grasa en el camino que van a tenerme abollar la cabeza más de lo actualmente existe.
ACTUALIZACIÓN CON RESPUESTA respuesta proporcionada por: linepogl
Ahora he tomado la idea de linepogl y extendido es cierta para que pueda trabajar muy fácilmente con mi base de código existente. Esto es lo que he llegado con:
class baseData {
public $meta;
public function __construct() {
$this->meta = new Meta($this);
}
}
class Meta {
public function __construct($obj) {
$a = get_object_vars($obj);
foreach ($a as $key => $value){
$this->$key = $key;
}
}
}
class contacts extends baseData
{
public $ID;
public $Name;
public $Email;
public $PhoneNumber;
public $CellPhone;
public $IsDealer;
public $DealerID;
}
que significa que ahora puedo llamar al siguiente código con los resultados deseados:
$objContact = new contacts();
echo($objContact->meta->Email);
estoy teniendo un tiempo difícil averiguar lo que quiere lograr. Como un solo objeto es solo eso: un solo objeto, ¿cómo tendría la clave del puntero actual algún significado? ¿Qué quiere hacer con la llave, por qué y cómo debe tener sentido para su objeto? – Nanne
No se puede obtener el 'nombre' de una variable a partir de una variable. Sin embargo, puede obtener todos los nombres de propiedades de un objeto usando 'get_object_vars' – Petah
haciendo un foreach en su objeto podría ayudarlo, no perfecto, pero es bueno para empezar – Tsadiq