Would you agree this is the definition of a PHP framework?

Are you really saying that:

  • You don’t believe the existing Radicore code can be improved upon, given the current requirements don’t change?
  • You don’t believe it’s possible for you to improve as a developer (i.e. you’re at the peak of your profession)?
3 Likes

The problem is, those people you’re calling “charlatans” are academics and programmers who work for places like Google and Microsoft. What makes you think you know more than those people? Have you ever had a paper published in a peer reviewed journal? (Fwiw, I’m in the process of getting my first paper published as we speak). Have you ever worked for a top level company such as google? What makes you think you know more than people like Misko Hevery who is a programming coach at google?

edit: As an extension, if you did really know better than these people you would actually be able to articulate your position and back it up with evidence in the form of code examples and alternative approaches. You’re unable to do this which makes your claims baseless

What can be asserted without evidence can be dismissed without evidence
-Christoper Hitchens

Is WordPress a framework then?

To be fair, the Illuminate\Database\Eloquent\Model class is ~3.3k lines.

I think the basic problem is @tony_marston404 is misinterpreting what is meant by “Inversion of Control” in the Software Framework definition:

In a framework, unlike in libraries or normal user applications, the overall program’s flow of control is not dictated by the caller, but by the framework.

Which does not translate to this:

This tells me that the only code you should have to write is when you want to override the default behaviour which the framework provides.

As an example: In Laravel, there’s an Application class that that manages the application flow, running the request through the Router and whatever other components that have to deal with it, taking the result of all that processing, and then using Symphony’s HTTPKernel to respond to the user’s request via HTTP.

It doesn’t mean the developer shouldn’t have to write any code in order for the framework to run. It just means, once s/he does, the framework is what is primarily responsible for the program’s “flow of control” or order of execution. Laravel provides that with the above class, which is why it’s a framework.

Quick tip: if you want to write _underscores_, escape them with backslashes:

if you want to write \_underscores\_, escape them with backslashes.
2 Likes

I had that amount of experience 20 years ago long before PHP even existed and I certainly haven’t make anywhere near the hundreds of mistakes you appear to be constantly making (but then I don’t claim to be perfect and I do pay attention to suggestions from others). Also best practice changes over time so even if you are following best practice from 20 years ago in the way you write your code (and it doesn’t look like what you are doing was best practice even then) it is certainly not best practice now.

Quoting things out of context can be used to ‘prove’ anything and so far in all of the huge threads you have created you are yet to quote a primary source in context.

1 Like

No, I do not. Other developers might want to see minor cosmetic changes, but I consider those to be nothing more than personal preferences which I can safely ignore. Ever since I first built this framework in 2003 I have been constantly maintaining and enhancing it. Sometimes an enhancement can be fitted in quite easily, but sometimes it can only be accommodated after a bit of refactoring. Fortunately my framework was built around the 3-Tier Architecture which has proved to be extremely resilient and amenable to change.

I have been in software development for nearly 40 years, have deigned and built entire applications in three different programming languages, have developed programming standards in each of those languages, and have built frameworks in each of those languages. Although I can still pick up little tidbits of information here and there which may provide improvements in small areas, I have seen nothing which would persuade me to ditch my existing code base and start again from scratch or even rewrite portions of it.

Which is a shame. You really shouldn’t be married to your code.

Scott

1 Like

Those people do not work on the same types of application that I develop so our needs and our customers are different.

Yes. In the early 1990’s I had an article printed in the HPWorld magazine.

No, and neither have millions of other developers.

They know what they know, and I know what I know. Everybody knows something different and everybody has their own way of analysing problems and designing solutions. There is no “one size fits all” set of programming practices, so stop telling me that just because I am different that I am automatically wrong.

I have provided descriptions and code samples, yet you simply ignore them.

And we’re back to avoiding the question and being incapable of talking about anything other than “My CODE!!!”. The question you were asked is “Is it possible for you to improve” and you said “I don’t want to rewrite my code” completely avoiding the question.

If it does not fulfil the conditions of a framework then it is not a framework.

So no. And you just demonstrated you don’t know what an academic journal or peer-review is. If it were possible your credibility would have been made even worse.

You are actively arguing against well documented practices and concepts presented by academics and people far more experienced than you. As I’ve said before you can write:

echo 'abc';

or

$str = [];
$str[] = 'a';
$str[] = 'b';
$str[] = 'c';

$arr = array_reverse($str);
ob_start();
for ($i = 0; $i < count($arr); $i++) {
 echo $arr[$i];
}

$str = ob_get_clean();
echo strrev($str);

And by providing a metric (something you never do!) can actively determine one approach as “better”.

No, you link back to your awful website which explains exactly zero. You never show apples-to-apples comparisons between the concepts you are discussing.

I disagree. The first three descriptions of a framework are

  • inversion of control: In a framework, unlike in libraries or normal user applications, the overall program’s flow of control is not dictated by the caller, but by the framework
  • default behavior: A framework has a default behavior. This default behavior must be some useful behavior and not a series of no-ops.[citation needed]
  • extensibility: A framework can be extended by the user usually by selective overriding or specialized by user code to provide specific functionality.

This tells me that the framework is in control, not the developer, that the framework should provide default behaviour, and the developer should only need to write code when this default behaviour needs to be changed. How else can this be accomplished?

You put [citation needed] in your own post rather than providing a citation?

Edit: Let’s find some actual primary sources for software frameworks.

This academic paper: http://www.cs.man.ac.uk/~horrocks/Publications/download/2004/LiHo04a.pdf which provides a software framework. The framework does not have a default behaviour.

And this one from CERN (You know, where they have the Large Hadron Collider and a lot of the world’s most intelligent people work) http://www.sciencedirect.com/science/article/pii/S0010465501002545 it’s behind paywall but if you read the paper ( I’m a doctoral student so have access) it says

Each component of the architecture will implement
a number of interfaces (pure abstract classes in C++)
for interacting with the other components, as shown
in Fig. 1). An interface consists of a set of functions
specialized for some type of interaction, and should
be as generic as possible, i.e. independent of the
actual implementation of the components and of the
concrete data types that will be added by users when
customizing the framework. I

The framework provides only C++ interfaces, no concrete classes, therefore no default behaviour.

That came from Wikipedia.

Tony, why don’t you quote the fourth description? Does the dev have to modify your code, to get their own customizations to work?

  • non-modifiable framework code: The framework code, in general, is not
    supposed to be modified, while accepting user-implemented extensions.
    In other words, users can extend the framework, but should not modify
    its code.

Scott

I am not making mistakes for the simple reason that my code works and it has no problem in finding customers who wish to buy it. People only criticise my code because I achieve results by following different rules, and certain people don’t like their rules being ignored or questioned.

I disagree. There are some basic programming practices which are universally accepted as being “good” and have been around for decades, such as code needs to be readable by a human being more than it needs to be executed by a computer. Once you start moving from high-level principles to low-level details I’m afraid that you are crossing the line into personal preferences and opinions, and nobody has the right to force their personal preferences and opinions onto others.

Genuine “best practices” do not change that much over time, only fashions. I’m afraid that fashions and fads can come and go like the wind - first it moves in one direction then another, first it blows then it’s still. What you call “best practices” I would call “politically correct practices” and I am well known among my friends to NOT be a follower of fashion and to be politically IN-correct.

I am an individual who prefers to think for himself and not act like a lemming and let other people do his thinking for him.

Why not? Unlike you I do not write “use once then throw away” applications, I write design and build enterprise applications which are expected to have a long life which is measured in years and not months.

I disagree. The term “improve as a developer” can be interpreted as “gaining knowledge which would cause one to do things differently” and I clearly stated that nothing I have learned since I first developed my framework would cause me to rewrite that framework, either in part or whole. I did most of my improving in the decades BEFORE I started programming with PHP, so at this stage in my career I see very little opportunity for anything other than very minor improvements.

I suggest you learn to read.

Fixed.

Unit testing? Separation of concerns? Better modularity?