personalizar formularios form createform php

php - createform - formularios en symfony 4



Cómo comprobar si no hay instancia de alguna clase en symfony2 (6)

Dales una interfaz común y luego

if (!$entity instanceof ShopEntity)

o quedarse con

if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order)

Evitaría crear funciones arbitrarias solo para guardar algunos caracteres en un solo lugar. Por otro lado, si lo necesita "con demasiada frecuencia", ¿puede tener un error de diseño? (En el sentido de "demasiados casos de borde" o tal)

Quiero ejecutar algunas funciones si la entidad es miembro de pocas clases pero no algunas.

Hay una función llamada instanceof .

Pero hay algo como

if ($entity !instanceof [User,Order,Product])


El manual de PHP dice: http://php.net/manual/en/language.operators.type.php

!($a instanceof stdClass)

Esto es solo una sintaxis escrita lógica y gramaticalmente correcta.

!$class instanceof someClass

Sin embargo, la sintaxis sugerida anteriormente es complicada porque no estamos especificando cuál es exactamente el alcance de la negación: la variable en sí misma o toda la construcción de $class instanceof someclass . Solo tendremos que confiar en la prioridad del operador aquí [Editado, gracias a @Kolyunya].


Esta función debe hacerlo:

function isInstanceOf($object, Array $classnames) { foreach($classnames as $classname) { if($object instanceof $classname){ return true; } } return false; }

Así que tu código es

if (!isInstanceOf($entity, array(''User'',''Order'',''Product'')));


O puedes probar estos

$cls = [GlobalNameSpace::class,/GlobalNameSpaceWithSlash::class,/Non/Global/Namespace::class]; if(!in_array(get_class($instance), $cls)){ //do anything }


Precedencia del Operador PHP

instanceof operator es justo antes de la negación, entonces esta expresión:

!$class instanceof someClass

es justo en PHP y este haz lo que esperas.


function check($object) { $deciedClasses = [ ''UserNameSpace/User'', ''OrderNameSpace/Order'', ''ProductNameSpace/Product'', ]; return (!in_array(get_class($object), $allowedClasses)); }