Jump to content

Object Oriented Programming


SchweppesAle

Recommended Posts

Hi, I was trying my hand at OOP by converting some code I had already written. 

 

It's currently returning the following error message:

"Using $this when not in object context on line 36" -- within the streamsend.php file

 

streamsend.php

<?php
require_once('config.php');
class streamsend extends config{

var $_streamsend;
var $_result;

public function add($users, $num_entries)
{
$username = $_username;
$password = $_password;
$listid = $_listid;

// Build the XML for the Request(s)
for($i = 0; $i < $num_entries; $i++)
{
	$request[] = "<system>".
"<action>addsubscriber</action>".
"<authorization>".
    "<username>$username</username>".
    "<password>$password</password>".
"</authorization>".
	"<parameterlist>".
    "<parameter id='List ID'><value>$listid</value></parameter>".
    "[<parameter id='Auto-Activate'><value>true</value></parameter>]".
	"<parameterarr>".
		"<parameter id='{emailaddress}'><value>".$users[$i][1]."</value></parameter>".
		"<parameter id= '{firstname}'><value>".$users[$i][2]."</value></parameter>".
		"<parameter id= '{lastname}'><value>".$users[$i][3]."</value></parameter>".
		"<parameter id= '{title}'><value>".$users[$i][4]."</value></parameter>".
		"</parameterarr>".
	"</parameterlist>".
"</system>";	
}

return $this->query($request);

}

public function query($request)
{
foreach($request as $entry)
{
	// Configuration
        $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
        $url = "http://server1.streamsend.com/streamsend/api.php";

        // Build Parameters
        $params['xmldata'] = $entry;

        // Open Connection Handle
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

        // Send Request
        $response = curl_exec ($ch);

        // Close Connection Handle
        curl_close ($ch);

	$xml = simplexml_load_string($response);
	$return[] = $xml -> resultlist -> result[1];
}
/*
return $this->_result[] = $return;*/
return $return;
}

}
?>

 

config.php

<?php
class config{
private static $_username = 'somename';
private static $_password = 'somepassword';
private static $_listid = '23523';
}

?>

 

interface.php

<?php
require_once('connect.php');
require_once('streamsend.php');
$connect_db = new connect();
$connection = $connect_db->_connection;

$users = $connect_db->_users;
$num_entries = count($users);


$streamsend = new streamsend();
echo var_dump(streamsend::add($users,$num_entries));




?>

 

Also, I was hoping for a few pointers if you guys have any regarding "The Best Way" of doing this(encapsulation through inheritence?, etc).  I'm still a rookie programmer

Link to comment
https://forums.phpfreaks.com/topic/172537-object-oriented-programming/
Share on other sites

Just figured out what the problem was  :P

 

return streamsend::query($request);

 

Would still appreciate any advice you guys could give me though.  Really trying to stray away from functional programming so that I can work on a more professional level.

Scratch that.  The config class was actually passing NULL values for the private virtual methods (username, password). I've redone everything, however I feel like placing the values within a public constructor is kind of defeating the purpose.  How would I go about doing this?

 

<?php
class config{
private $_username;
private $_password;
private $_listid;


function __construct(){
	$this->_username = 'someusername';
	$this->_password = 'somepassword';
	$this->_listid = '23532';
}

function get_username()
{
	return $this->_username;
}

function get_password()
{
	return $this->_password;
}

function get_listid()
{
	return $this->_listid;
}


}

?>

 

 

streamsend.php

<?php
require_once('config.php');
class streamsend extends config{

function __construct(){
parent::__construct();
}

public function list_users()
{
$username = $_username;
$password = $_password;
$listid = $_listid;

$request = "<system>
	<authorization>
		<username>$username</username>
		<password>$password</password>
	</authorization>
		<action>getlists</action>
	</system>";
}

public function add($users, $config)
{

$login = $config->get_username();
$password = $config->get_password();
$listid = $config->get_listid();

$num_entries = count($users);

// Build the XML for the Request(s)
for($i = 0; $i < $num_entries; $i++)
{
	$request[] = "<system>".
"<action>addsubscriber</action>".
"<authorization>".
    "<username>".$login."</username>".
    "<password>".$password."</password>".
"</authorization>".
	"<parameterlist>".
    "<parameter id='List ID'><value>$listid</value></parameter>".
    "[<parameter id='Auto-Activate'><value>true</value></parameter>]".
	"<parameterarr>".
		"<parameter id='{emailaddress}'><value>".$users[$i][1]."</value></parameter>".
		"<parameter id= '{firstname}'><value>".$users[$i][2]."</value></parameter>".
		"<parameter id= '{lastname}'><value>".$users[$i][3]."</value></parameter>".
		"<parameter id= '{title}'><value>".$users[$i][4]."</value></parameter>".
		"</parameterarr>".
	"</parameterlist>".
"</system>";	
}

return streamsend::query($request);

}

public function query($request)
{
foreach($request as $entry)
{
	// Configuration
        $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
        $url = "http://server1.streamsend.com/streamsend/api.php";

        // Build Parameters
        $params['xmldata'] = $entry;

        // Open Connection Handle
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

        // Send Request
        $response = curl_exec ($ch);

        // Close Connection Handle
        curl_close ($ch);

	$xml = simplexml_load_string($response);
	$return[] = $xml -> resultlist -> result[1];
}

return $return;
}

}
?>

 

interface.php

<?php
require_once('connect.php');
require_once('streamsend.php');
require_once('config.php');
$connect_db = new connect();
$streamsend = new config;

$connection = $connect_db->_connection;

$users = $connect_db->_users;

echo var_dump(streamsend::add($users, $streamsend));




?>

 

 

Another problem that I noticed is under the function add() within the streamsend.php file.  I had previously tried creating an object from the streamsend class hoping that it would inherit all virtual variables from the config.class. 

 

ex: within streamsend::add()

streamsend = new streamsend;

 

However, even after including parent::__construct(); within the streamsend.php; I found that this was not the case. (variables where returning NULL which tells me the construct within config.php wasn't being executed). 

 

Am I missing something obvious?

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.