Solved

abstract class property and method

Posted on 2014-01-16
7
498 Views
Last Modified: 2014-01-17
abstract class shape{
private $_property1
protected method1(){}
}

any class that extends abstract class shape
does not require properties
and depending upon when I do private,protected,public method
I get error must be visibility or better


please explain.
0
Comment
Question by:rgb192
7 Comments
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 39787336
What's the question?  PHP Abstract classes are documented here:
http://php.net/manual/en/language.oop5.abstract.php

The abstract class definition forces the programmer to extend the class, rather than to instantiate the class.
0
 

Author Comment

by:rgb192
ID: 39787373
questions are

1)
if I set properties in the parent class, why dont the children require the same properties

2)
and setting methods in the child class
what is the
 must be visibility or better
error
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 39787384
Show us some code examples that illustrate the issues, please.  Thanks, ~Ray
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
LVL 33

Accepted Solution

by:
Slick812 earned 500 total points
ID: 39787457
You should maybe read the class explanations in the PHP manual or tutorial to get the meaning they have. A Class Abstraction that you show has a DIFFERENT purpose in PHP programming than a Regular Class (no abstraction). You can make a normal Class in PHP and then extend that to another Class you write. AND can ADD properties and methods to your new class, AND use properties and methods in the parent class. Very useful in programming. But do you know why You would write and use an Abstract Class instead of a normal Class? This is Important, the reason that abstract classes are in PHP.
 Mostly abstracts are used as a MINIMUN  definition, NON-WORKING template or "Class Guideline" only to show the absolute minimum Properties, methods, that ALL sub-classes MUST have to work in a class inheritance environment ,OR say in a way you may understand - any sub-class will have at LEAST the required methods (same number parameters) as the parent abstract class, so any sub-class can work if the minimum methods are used.
OR as an Abstract Class is like a partially written class (not complete). It is much like a code-template, with blanks (in methods) that HAVE to be completed and filled in for the sub class extensions.

You say -
any class that extends abstract class shape does not require properties.
This is probably Not True in this context, but NO Class is required to have any properties, so the abstract and sun class may not have properties, but why would you write a class and not have ANY properties? ? ? ?.
The sub class already can use any Properties in the absrt parent class, so no need to RE-DECLARE define, the same property as the parent.
But your question here makes no sense to me? ?

in the PHP maanual thier example does have a PUBLIC function -
class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }

    public function prefixValue($prefix) { // THIS IS PUBLIC
        return "{$prefix}ConcreteClass1";
    }
}

You have to have the abstrat method -
protected method1(){}

and ADD to the code so that it does something for your NEW subclass,
in your sub-class, , but you also MUST define (write) a PUBLIC FUNCTION to USE this  method1()  and do other code to do what your CLASS is written to do. ALL of this Class writing is for a purpose, to get PHP to group together code and have the class do "Code Work" that you need in a web page, You use regular Class for one purpose, and Abstract Class for another purpose, and an Interface for another Class purpose, that chance what you use for what your Web Page output is suppose to do.
0
 
LVL 8

Expert Comment

by:Surrano
ID: 39787829
I *think* I understand the problem but don't know the explanation.
PHP seems to complain about a *private* member in an *abstract* class which should not be a problem at all, maybe a warning if it is completely unused.
0
 
LVL 108

Expert Comment

by:Ray Paseur
ID: 39788538
This worked correctly for me.  If you have an example that is failing, please post it so we can be looking at exactly the same thing you're looking at, thanks.

<?php // RAY_temp_foo.php
error_reporting(E_ALL);


abstract class Shape
{
    private $_property1;
    protected function method1(){}
}

class Square extends Shape
{
    public function method1()
    {
        echo 'Square';
    }
}

$sq = new square;
$sq->method1();

Open in new window

0
 

Author Closing Comment

by:rgb192
ID: 39789959
Absolute minimum requirements.  Thanks.
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Introduction Many web sites contain image galleries; a common design for these galleries includes a page with a collection of thumbnail images.  You can click on each of the thumbnail images to see the larger version of the image.  This is easily i…
Things That Drive Us Nuts Have you noticed the use of the reCaptcha feature at EE and other web sites?  It wants you to read and retype something that looks like this.Insanity!  It's not EE's fault - that's just the way reCaptcha works.  But it is …
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

706 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now