0

How can I use a method inside another method of the same class? I have a getName() method that returns if the name field is empty or not, then if it is empty the return value would be displayed beside the textfield.

class UserInfo extends TextInput{

    public function setName($name){ 
        $this->name = $name;
    }

    public function getName(){
        if($isEmpty = Validate::isEmpty($this->name)){
            return "Name" . $isEmpty;
        }
        else{
            return $this->name;
        }
    }

    public function createUserInfo(){
        echo $this->createInput('NAME' ,'text', 'name'); //create text input for name
        getName(); //if 'submit', return the value of getname 
    }

}
Giacomo1968
  • 25,759
  • 11
  • 71
  • 103
  • possible duplicate of [When to use self vs $this?](http://stackoverflow.com/questions/151969/when-to-use-self-vs-this) – Reactgular Jun 14 '14 at 00:21
  • While I understand this has nothing to do with the actual question, you should try to avoid "echo"ing from withing methods in classes. You want to return the result from "createInput", and but the "echo" part on the outside of the class: $userInfo = new UserInfo(); echo $userInfo->createUserInfo() . $userInfo->getName(); – Ramon de la Fuente Jun 14 '14 at 00:48
  • You code has some major terrible practises: 1) You're violating Liskov Substitution Principle 2) As well as the Single-Responsibility Principle 3) Global state 4) Tight coupling 5) And this is not how validation should be handled at all. Instead of thinking about this yourself, look how Zend Framework developers do that. – Yang Jun 14 '14 at 04:52

2 Answers2

1

You may try following in your createUserInfo method, just like properties/variables you used using the $this keyword, but only different is that, when are calling a method/function use ():

$this->getName();

The $this refers to the current object. Check this page on class basics in the PHP manual.

The Alpha
  • 143,660
  • 29
  • 287
  • 307
0

Easy, like this:

$UserInfo_class = new UserInfo();
$UserInfo_class->setsetName('Name');
$UserInfo_class->getName('Name');

But then you have this inside your class. Perhaps this is what your question is all about?

public function createUserInfo(){
    echo $this->createInput('NAME' ,'text', 'name'); //create text input for name
    getName(); //if 'submit', return the value of getname 
}

It should be; note the $this->:

public function createUserInfo(){
    echo $this->createInput('NAME' ,'text', 'name'); //create text input for name
    return $this->getName(); //if 'submit', return the value of get name 
}
Giacomo1968
  • 25,759
  • 11
  • 71
  • 103