slipkyes slipkyes - 1 month ago 19
PHP Question

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP

how can i fix this error ?

error

facebook.php.php file:

more details more details more details more details more details more details more details more details more details more details more details more details more details more details more details more details more details more details

<?php
/**
* Plugin Name: Facebook Page Widget
*/

// Load widget
add_action( 'widgets_init', 'qwis_facebook_load_widget' );

// Register widget
function qwis_facebook_load_widget() {
register_widget( 'qwis_facebook_widget' );
}

// Widget class
class qwis_facebook_widget extends WP_Widget {

/**
* Widget setup.
*/
function qwis_facebook_widget() {

// Widget settings
$widget_ops = array( 'classname' => 'qwis_facebook_widget', 'description' => __('Facebook page widget', 'qwis_facebook_widget') );

// Widget control settings
$control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'qwis_facebook_widget' );

// Create the widget
parent::__construct( 'qwis_facebook_widget', __('Facebook Page', 'qwis_facebook_widget'), $widget_ops, $control_ops );

}

/**
* Display widget
*/
function widget( $args, $instance ) {
extract( $args );

// Variables from the widget settings
$title = apply_filters('widget_title', $instance['title'] );
$page_url = $instance['page_url'];
$tabs = $instance['tabs'];
$header = $instance['header'];
$cover = $instance['cover'];
$faces = $instance['faces'];

// Before widget (defined by theme functions file)
echo $before_widget;

// Display widget title
if ( $title )
echo $before_title . $title . $after_title;

?>
<div id="fb-root"></div>

<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/ro_RO/sdk.js#xfbml=1&version=v2.7";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<div class="fb-page" data-href="<?php echo esc_url($page_url); ?>" data-tabs="<?php echo ($tabs); ?>" data-small-header="<?php if($header) { echo 'true'; } else { echo 'false'; } ?>" data-adapt-container-width="true" data-hide-cover="<?php if($cover) { echo 'true'; } else { echo 'false'; } ?>" data-show-facepile="<?php if($faces) { echo 'true'; } else { echo 'false'; } ?>"></div>

<?php

// After widget (defined by theme functions file)
echo $after_widget;
}

/**
* Update the widget
*/
function update( $new_instance, $old_instance ) {
$instance = $old_instance;

// Strip tags to remove HTML (important for text inputs)
$instance['title'] = strip_tags( $new_instance['title'] );
$instance['page_url'] = strip_tags( $new_instance['page_url'] );
$instance['tabs'] = strip_tags( $new_instance['tabs'] );
$instance['header'] = strip_tags( $new_instance['header'] );
$instance['cover'] = strip_tags( $new_instance['cover'] );
$instance['faces'] = strip_tags( $new_instance['faces'] );

return $instance;
}


function form( $instance ) {

// Set up some default widget settings
$defaults = array( 'title' => 'Find me on Facebook', 'page_url' => '', 'tabs' => '', 'header' => false, 'cover' => false, 'faces' => false );
$instance = wp_parse_args( (array) $instance, $defaults ); ?>

<!-- Widget Title: Text Input -->
<p>
<label for="<?php echo $this->get_field_id( 'title' ); ?>">Title:</label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
</p>

<!-- page_url -->
<p>
<label for="<?php echo $this->get_field_id( 'page_url' ); ?>">Facebook Page URL:</label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id( 'page_url' ); ?>" name="<?php echo $this->get_field_name( 'page_url' ); ?>" value="<?php echo $instance['page_url']; ?>" />
<small>e.g. http://www.facebook.com/facebook</small>
</p>

<!-- tabs -->
<p>
<label for="<?php echo $this->get_field_id( 'tabs' ); ?>">Tabs:</label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id( 'tabs' ); ?>" name="<?php echo $this->get_field_name( 'tabs' ); ?>" value="<?php echo $instance['tabs']; ?>" />
<small>e.g. timeline, messages, events</small>
</p>

<!-- header -->
<p>
<input type="checkbox" id="<?php echo $this->get_field_id( 'header' ); ?>" name="<?php echo $this->get_field_name( 'header' ); ?>" <?php checked( (bool) $instance['header'], true ); ?> />
<label for="<?php echo $this->get_field_id( 'header' ); ?>">Use Small Header</label>
</p>

<!-- cover -->
<p>
<input type="checkbox" id="<?php echo $this->get_field_id( 'cover' ); ?>" name="<?php echo $this->get_field_name( 'cover' ); ?>" <?php checked( (bool) $instance['cover'], true ); ?> />
<label for="<?php echo $this->get_field_id( 'cover' ); ?>">Hide Cover Photo</label>
</p>

<!-- faces -->
<p>
<input type="checkbox" id="<?php echo $this->get_field_id( 'faces' ); ?>" name="<?php echo $this->get_field_name( 'faces' ); ?>" <?php checked( (bool) $instance['faces'], true ); ?> />
<label for="<?php echo $this->get_field_id( 'faces' ); ?>">Show Friend's Faces</label>
</p>

<?php
}
}

?>

Answer

Some research...

Your error was,

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP

Type "methods same name as class php" into google and the first two results are Stack Overflow questions, with lots of info for you.

The third result is http://php.net/manual/en/language.oop5.decon.php. Always worth reading what php.net has to say about PHP. Click on Google's link and scroll a little way down to find...

For backwards compatibility with PHP 3 and 4, if PHP cannot find a __construct() function for a given class, and the class did not inherit one from a parent class, it will search for the old-style constructor function, by the name of the class.

and...

Warning Old style constructors are DEPRECATED in PHP 7.0, and will be removed in a future version. You should always use __construct() in new code.


The conclusion...

From that research we can work out that you need to do a quick update in your code. Replace the line,

function qwis_facebook_widget() {

with

function __construct() {
Comments