Jump to content

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?

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.