Jump to content

Beginner PHP Coder


Sam_B

Recommended Posts

First, I apologize if this is the wrong venue, but it seemed the best place to ask question about code. The code below is very simple most likely, but I am having the hardest time visualizing how it's run. It would be most helpful if someone could point out the error of my thinking that would be awesome. This is literally the first php lesson I have ever taken.

 

I'm a very visual, hands on kind of learner. It would be most appreciated to get direction into the best way to learn PHP as a visual learner. Thanks! 

<?php
// I'm following an example online and need an explanation to this. This first part is creating
// a class called User.
class User {

// This is a variable set to public. Now in the lesson I discovered public and private. Why is
// public and private important? Could the code just run on $age? 
  public $age;
  
// This is a public function called __construct. Could I name this anything and the function
// would still work? What is important about __? 
  public function __construct($age) { 
// Ok, why is $this used? Is it correct in assuming that any word with a "$" assigned to it in
// this class will refer to age? 
    $this->age = $age;
  }

// This is the 3rd function called getAge(). Why is getAge() blank?  
  public function getAge() {
    echo $this->age;
  }
  
}

// Shoudln't this be at the top? And isn't there a cleaner way to output the age of a new user?
// This seems to take up way too much coding just to display the name of a variable?
$brad = new User(31);

// I'm so confused. 
$brad->getAge();

Link to comment
Share on other sites

The code defines a class called User and then creates an object instance of that class called $brad. Finally it calls the getAge() method of the $brad object and the result is that it prints the number 31.

 

A class is a template which is used to create objects. Objects are like bubbles which encapsulate data and functions (also called methods). The data and functions can be defined as public which means they can be accessed from anywhere in your program, or as private which means they are hidden away and can only be accessed by the object itself.

 

The __constructor() function is a special function, it is always called when a new object is created. The getAge() function is a normal function, it only runs when you decide to call it from somewhere else in your program (the final line).

 

The $this variable is a way for an object to refer to itself.

 

What's the point of all this? Say you wanted to have several users, you've now built the 'User' class template and it's really easy to create them all.

 

For example let's create Bob who is 27 and Jane who is 33:

 

  1. $bob = new User(27);
  2. $jane = new User(33);

 

Try this video where some of the concepts are explained:

Link to comment
Share on other sites

There also a lot of neat things you can do with a classes, such as this for example:

 

Let's say you have a class called Member.php

<?php

# Member class - Store user info and functions to access/control the flow of data.

class Member {

    // The member attributes (variables) containing required and optional information.
    // The attributes must correspond to the database table columns:

    private $id = NULL;
    private $userType = NULL; // Required 
    private $username = NULL; // Required 
    private $email = NULL; // Required   
    private $pass = NULL; // Required
    private $fullName = NULL;
    private $validation_code = NULL;
    private $address = NULL;
    private $city = NULL;
    private $state = NULL;
    private $zipCode = NULL;

    // Method returns the user ID:
    public function getId() {
        return $this->id;
    }

    // Grab the user's username:
    public function getUsername() {
        return $this->username;
    }

    // Grab the user's full name:
    public function getFullName() {
        return $this->fullName;
    }

    // Grab the password:
    public function getPass() {
        return $this->pass;
    }

    public function getUserType() {
        return $this->userType;
    }

    // Clear the password once user is logged in:
    public function clearPass() {
        $this->pass = NULL;
    }

    public function getEmail() {
        return $this->email;
    }

    // Method returns a Boolean if the user is an administrator:
    public function isAdmin() {
        return ($this->userType == 'author');
    }

    public function isSysop() {
        return ($this->userType == 'sysop');
    }

    public function isNewUser() {
        return ($this->userType == 'public');
    }

    // Method returns a Boolean indicating if the user is an administrator
    // or if the user is the original author of the provided page:
    public function canEditPage(Page $page) {
        return (($this->isAdmin() || ($this->id == $page->getCreatorId())));
    }

    // Method returns a Boolean indicating if the user is an administrator or an author:
    public function canCreatePage() {
        return ($this->isAdmin() || $this->isSysop());
    }

}

The you can simply do the following to put the pull a corresponding record from a database table:

    // Check against the database:
    $query = 'SELECT id, userType, username, email, pass, fullName, address, city, state, zipCode FROM users WHERE username=:username';
    $stmt = $pdo->prepare($query);
    $stmt->execute(array(':username' => $_POST['username']));
    /* The following fetches the class Member and creates an instance $stored_user_data */
    $stmt->setFetchMode(PDO::FETCH_CLASS, 'Member');
    $stored_user_data = $stmt->fetch();

Then for example you can check the user's input against the database table password like this:

    // Verify Stored Hashed Password against input:
    if ($stored_user_data) {
        $result = password_verify($_POST['pass'], $stored_user_data->getPass());
    }

However, you got to learn how to crawl before you walk, so following php_bad_boy's post would probably be the prudent thing to do. ;D

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.