Hallo ich würde gerne eine Klasse Benutzer erstellen, in dieser sich die Benutzer Daten befinden. Diese soll mit einer Funktion erstellt werden. Diese gibt dann die erstellte Klasse zurück. Wie kann ich nun aber einer anderen Klasse sagen (Casten) , dass das die Benutzer Klasse ist ?
Klassen Casten ?
- PHP
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von N3X.
-
-
Achso, PHP.
Du kannst das lediglich als Object casten oder mit PhpDoc sagen:
php.net/manual/de/language.types.type-juggling.php
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „backtothetoast“ ()
-
-
@backtothetoast
@Markus Jacobs
Falls ihr es nicht gesehen habt: Dieses Thema ist über PHP, nicht VB.NET oder C#. -
@nafets: Habs bereits editiert.
-
-
so geht es
PHP-Quellcode
- [b][/b]<?php
- class User {
- public $username;
- public $password;
- public $group;
- }
- class UserFactory
- {
- public function getUser()
- {
- $user = new User();
- $user->username = "Test";
- $user->password = "ABC";
- $user->group = 0;
- return $user;
- }
- }
- $userFactory = new UserFactory();
- $user = $userFactory->getUser();
- echo $user->username;
- ?>[b][/b]
-
"Luckily luh... luckily it wasn't poi-"
-- Brady in Wonderland, 23. Februar 2015, 1:56
Desktop Pinner | ApplicationSettings | OnUtils -
Ich wollte fragen, ob casten in php möglich ist.
-
-
@Thunderbolt: Geht allerdings bisher nur begrenzt:
php.net/manual/de/language.types.type-juggling.php -
-
-
Andy schrieb:
so geht es
und wo castest du hier? :O -
windowsfan schrieb:
php programmiert man ohne datentypen, das ist u.A. auch der grund warum php nicht als richtige programmiersprache angesehen wird
Das stimmt in der Form so nicht ganz. Sicher lassen sich ich sage mal Datentypen erzwingen, ebenfalls auch komplexe Datentypen. Schau dir dazu einmal das Zend-Framework 2 als hervorragendes Beispiel an. Typecasting ist in PHP bei sorgfälltiger Programmierung auch gar nicht auf komplexe Datentypen notwendig.
backtothetoast schrieb:
@Thunderbolt: Geht allerdings bisher nur begrenzt:
php.net/manual/de/language.types.type-juggling.php
Typecasting ist an der stelle Quasi erledigt, besserer Umgang wäre allerdings Hydratorklassen einzusetzen und Typehinting zu verwenden.
Dazu folgendes Beispiel, aus einem aktuellen Projekt von mir:
Teamspeak3AdapterInterface
PHP-Quellcode
Teamspeak3Adapter
PHP-Quellcode
- <?php
- /*
- * @author N3X
- * @copyright Copyright (c) 2015, Ilya Beliaev
- * @since Version 1.0
- *
- * $Id$
- * $Date$
- */
- namespace TSCore\Adapter;
- use TeamSpeak3\TeamSpeak3;
- use Zend\Stdlib\Exception\InvalidArgumentException;
- use TeamSpeak3\Node\Server;
- class Teamspeak3Adapter implements Teamspeak3AdapterInterface{
- protected $ts;
- public function init(array $config) {
- if(!array_key_exists("username", $config)){
- throw new InvalidArgumentException("Username for Teamspeak-Server not set");
- }
- if(!array_key_exists("password", $config)){
- throw new InvalidArgumentException("Password for Teamspeak-Server not set");
- }
- if(!array_key_exists("server", $config)){
- throw new InvalidArgumentException("Servername for Teamspeak-Server not set");
- }
- if(!array_key_exists("port", $config)){
- throw new InvalidArgumentException("Port for Teamspeak-Server not set");
- }
- $username = $config["username"];
- $password = $config["password"];
- $server = $config["server"];
- $port = $config["port"];
- $ts = TeamSpeak3::factory("serverquery://$username:$password@$server/?server_port=$port");
- $this->setTeamspeak($ts);
- }
- public function writeMessage($message) {
- $this->getTeamspeak()->message($message);
- }
- /**
- * Get Teamspeak
- * @return Server
- */
- public function getTeamspeak() {
- return $this->ts;
- }
- /**
- * Set Teamspeak
- * @param TeamSpeak3 $teamspeak
- */
- public function setTeamspeak(Server $teamspeak) {
- $this->ts = $teamspeak;
- }
- }
TS3Adapter
PHP-Quellcode
- <?php
- /*
- * @author N3X
- * @copyright Copyright (c) 2015, Ilya Beliaev
- * @since Version 1.0
- *
- * $Id$
- * $Date$
- */
- namespace TSCore\Authentication;
- use Zend\Authentication\Result;
- use Zend\Authentication\Adapter\AdapterInterface;
- use TSCore\Adapter\Teamspeak3AdapterInterface;
- use TSCore\Entity\SuperAdmin;
- class TS3Adapter implements AdapterInterface{
- protected $authenticateResultInfo;
- protected $identity;
- protected $credential;
- protected $teamspeak;
- protected $config;
- public function __construct(Teamspeak3AdapterInterface $teamspeak, array $config) {
- $this->setTeamspeakAdapter($teamspeak);
- $this->setConfig($config);
- }
- public function setConfig(array $config){
- $this->config = $config;
- }
- public function getConfig(){
- return $this->config;
- }
- public function setTeamspeakAdapter(Teamspeak3AdapterInterface $teamspeak){
- $this->teamspeak = $teamspeak;
- return $this;
- }
- /**
- *
- * @return \TSCore\Adapter\Teamspeak3AdapterInterface
- */
- public function getTeamspeakAdapter(){
- return $this->teamspeak;
- }
- public function setIdentity($identity){
- $this->identity = $identity;
- return $this;
- }
- public function getIdentity(){
- return $this->identity;
- }
- public function setCredential($credential){
- $this->credential = $credential;
- return $this;
- }
- public function getCredential(){
- return $this->credential;
- }
- /**
- * Setup for authentication result
- */
- protected function setupResult(){
- // setup result info
- $this->authenticateResultInfo = array(
- 'code' => Result::FAILURE,
- 'identity' => $this->getIdentity(),
- 'messages' => array()
- );
- return true;
- }
- /**
- * Creates a Zend\Authentication\Result object
- *
- * @return AuthenticationResult
- */
- protected function createResult(){
- return new Result(
- $this->authenticateResultInfo['code'],
- $this->authenticateResultInfo['identity'],
- $this->authenticateResultInfo['messages']
- );
- }
- public function authenticate() {
- $this->setupResult();
- if(!$this->getIdentity()){
- $this->authenticateResultInfo["messages"][] = "The Username Field is required.";
- return $this->createResult();
- }
- if(!$this->getCredential()){
- $this->authenticateResultInfo["messages"][] = "The Password Field is required.";
- return $this->createResult();
- }
- try{
- $onfig = $this->getConfig();
- $config["username"] = $this->getIdentity();
- $config["password"] = $this->getCredential();
- $this->getTeamspeakAdapter()->init($config);
- } catch (\Exception $ex) {
- $this->authenticateResultInfo["code"] = Result::FAILURE_CREDENTIAL_INVALID;
- $this->authenticateResultInfo["messages"][] = "Login failed.";
- return $this->createResult();
- }
- $oUser = new SuperAdmin();
- $oUser->setUsername($this->getIdentity());
- $oUser->setPassword($this->getCredential());
- $this->authenticateResultInfo['code'] = Result::SUCCESS;
- $this->authenticateResultInfo['identity'] = $oUser;
- $this->authenticateResultInfo["messages"][] = "logged in.";
- return $this->createResult();
- }
- }
Sofern in PHP ordentlich entwickelt wird, ist das Casten von Datentypen höchstens auf unterster Ebene notwendig (strings, ints, doubles und etc.).Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „N3X“ ()
-
Ähnliche Themen
-
Goldwing Studios - - Weitere Sprachen und sprachübergreifende Themen
-
ponmalka - - Sonstige Problemstellungen
-
6 Benutzer haben hier geschrieben
- Gast (6)
- Andy (3)
- windowsfan (2)
- Thunderbolt (2)
- Niko Ortner (1)
- nafets (1)